get 和post
2016-02-19 09:28
218 查看
*************
get 和post
请求分好几种请求方式:
最常用的就是get和post
请求:请求头+请求体
get只有请求头
post有请求头和请求体
他俩发请求功能是一样的
请求头是有点不一样的
响应都是一样的
get权限比较低
post可以改变服务器上的一些内容
他俩的重点不太一样 一个在获取 一个在发送上传
get对参数的长度有要求 不能太长 post的参数在请求体中 多长都行
(现在HTTP版本都是1.1)
post会把参数放到请求体里
**********
上传 post
协议:
HTTP 95%
超文本传输协议 面向应用层面
请求+响应 NSURLRquest + NSURLResponse
请求:get + post
get: NSURLRequest 包含请求地址(请求头)
post: 请求头 (URL)+ 请求体(网络请求参数)
NSURLResponse
响应
@interface NSURLResponse : NSObject <</SPAN>NSSecureCoding, NSCopying>
- (long long)expectedContentLength;
资源总大小
- (NSString *)suggestedFilename;
资源名
@interface NSHTTPURLResponse : NSURLResponse
- (NSInteger)statusCode;
状态码
************
只要是get协议 都可以用浏览器测试
get 上传的数据<</SPAN>2k 限制
post:
①数据量大
②安全
post1 :
只能上传文本(字符串) 不能传文件
网站的编码格式:
表单属性enctype
enctype="application/x- www-form-urlencoded".这个属性管理的是表单的编码
application/x-www-form-urlencoded (默认值)
固定写法
GET:
1.创建一个NSURLRequest
2.发起NSURLConnection
POST1:
1.设置HTTP请求方式
2.写字段Content-Type:application/x-www-form-urlencoded
3.写字段Content-Length:请求参数的长度
4.设置请求体
5.发起连接
@interface NSMutableURLRequest : NSURLRequest
- (void)setHTTPMethod:(NSString *)method;
设置HTTP请求方式 POST 默认是GET
- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
POST1协议固定写法
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%d", bodyLen] forHTTPHeaderField:@"Content-Length"];
- (void)setHTTPBody:(NSData *)data;
设置请求体
- (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc;
// Result in O(n) time; the result is exact. Returns 0 on error (cannot convert to specified encoding, or overflow)
NSString 的方法 计算编码后的二进制长度
- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding; // External representation
overflow)
NSString 的方法 转换成二进制
post1示例代码:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@my/login.php",SNS_URL]]];
NSData *data = [[NSString stringWithFormat:@"username=%@&password=%@", _name.text, _password.text] dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPMethod:@"POST"];
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%d", data.length] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:data];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
********
post2
上传二进制
post表单就是一个 有特殊格式的二进制串
表单拼接
multipart/form-data ABC123
POST /php/upload_pic.php HTTP/1.1 \r\n
Content-Length : 1234 \r\n
Content-Type : multipart/form-data; boundary=ABC123 \r\n
--ABC123\r\n
Content-Disposition : form-data; name=“action”\r\n
\r\n
upload_pic
\r\n
--ABC123\r\n
Content-Disposition: form-data; name=“pic”; filename=“test.png” \r\n
Content-Type : image/png \r\n (如果是jpg图片 image/jpeg)
\r\n
文件的内容放在这个地方(图片的二进制)
\r\n
--ABC123\r\n Content-Disposition: form-data;
name=“desc”\r\n
\r\n
我的图片
\r\n
--ABC123\r\n Content-Disposition: form-data;
name=“video”; filename=“myvideo.mp4”\r\n Content-Type : video/mp4\r\n
\r\n
Myvideo.mp4二进制内容放在这里
\r\n
--ABC123--\r\n
Content-Disposition: form-data; name=“pic”; filename=“test.png”
Content-Type : image/png \r\n (如果是jpg图片 image/jpeg)
主要设置以上两个
其他每个参数都差不多
很复杂 知道原理就可以 一般直接用asi的第三方库CocoaLigature1
- fno - objc - arc -w
混编
最后一个参数是忽略警告
get 和post
请求分好几种请求方式:
最常用的就是get和post
请求:请求头+请求体
get只有请求头
post有请求头和请求体
他俩发请求功能是一样的
请求头是有点不一样的
响应都是一样的
get权限比较低
post可以改变服务器上的一些内容
他俩的重点不太一样 一个在获取 一个在发送上传
get对参数的长度有要求 不能太长 post的参数在请求体中 多长都行
(现在HTTP版本都是1.1)
post会把参数放到请求体里
**********
上传 post
协议:
HTTP 95%
超文本传输协议 面向应用层面
请求+响应 NSURLRquest + NSURLResponse
请求:get + post
get: NSURLRequest 包含请求地址(请求头)
post: 请求头 (URL)+ 请求体(网络请求参数)
NSURLResponse
响应
@interface NSURLResponse : NSObject <</SPAN>NSSecureCoding, NSCopying>
- (long long)expectedContentLength;
资源总大小
- (NSString *)suggestedFilename;
资源名
@interface NSHTTPURLResponse : NSURLResponse
- (NSInteger)statusCode;
状态码
************
只要是get协议 都可以用浏览器测试
get 上传的数据<</SPAN>2k 限制
post:
①数据量大
②安全
post1 :
只能上传文本(字符串) 不能传文件
网站的编码格式:
表单属性enctype
enctype="application/x- www-form-urlencoded".这个属性管理的是表单的编码
application/x-www-form-urlencoded (默认值)
固定写法
GET:
1.创建一个NSURLRequest
2.发起NSURLConnection
POST1:
1.设置HTTP请求方式
2.写字段Content-Type:application/x-www-form-urlencoded
3.写字段Content-Length:请求参数的长度
4.设置请求体
5.发起连接
@interface NSMutableURLRequest : NSURLRequest
- (void)setHTTPMethod:(NSString *)method;
设置HTTP请求方式 POST 默认是GET
- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
POST1协议固定写法
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%d", bodyLen] forHTTPHeaderField:@"Content-Length"];
- (void)setHTTPBody:(NSData *)data;
设置请求体
- (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc;
// Result in O(n) time; the result is exact. Returns 0 on error (cannot convert to specified encoding, or overflow)
NSString 的方法 计算编码后的二进制长度
- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding; // External representation
overflow)
NSString 的方法 转换成二进制
post1示例代码:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@my/login.php",SNS_URL]]];
NSData *data = [[NSString stringWithFormat:@"username=%@&password=%@", _name.text, _password.text] dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPMethod:@"POST"];
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%d", data.length] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:data];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
********
post2
上传二进制
post表单就是一个 有特殊格式的二进制串
表单拼接
multipart/form-data ABC123
POST /php/upload_pic.php HTTP/1.1 \r\n
Content-Length : 1234 \r\n
Content-Type : multipart/form-data; boundary=ABC123 \r\n
--ABC123\r\n
Content-Disposition : form-data; name=“action”\r\n
\r\n
upload_pic
\r\n
--ABC123\r\n
Content-Disposition: form-data; name=“pic”; filename=“test.png” \r\n
Content-Type : image/png \r\n (如果是jpg图片 image/jpeg)
\r\n
文件的内容放在这个地方(图片的二进制)
\r\n
--ABC123\r\n Content-Disposition: form-data;
name=“desc”\r\n
\r\n
我的图片
\r\n
--ABC123\r\n Content-Disposition: form-data;
name=“video”; filename=“myvideo.mp4”\r\n Content-Type : video/mp4\r\n
\r\n
Myvideo.mp4二进制内容放在这里
\r\n
--ABC123--\r\n
Content-Disposition: form-data; name=“pic”; filename=“test.png”
Content-Type : image/png \r\n (如果是jpg图片 image/jpeg)
主要设置以上两个
其他每个参数都差不多
很复杂 知道原理就可以 一般直接用asi的第三方库CocoaLigature1
- fno - objc - arc -w
混编
最后一个参数是忽略警告