1. GET和POST的主要区别表现在数据传递上
GET
在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
http://ww.test.com/login?username=123&pwd=234&type=JSON
由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
POST
发给服务器的参数全部放在请求体中
理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
2. GET 和 POST的选择
选择GET和POST的建议
如果要传递大量数据,比如文件上传,只能用POST请求
GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
如果仅仅是索取数据(数据查询),建议使用GET
如果是增加、修改、删除数据,建议使用POST
发送POST请求步骤
a.确定URL路径
b.创建请求对象(可变对象)NSMutableURLRequest
c.修改请求对象的方法为POST,设置请求体(Data)
d.发送一个异步请求
e.补充:设置请求超时,处理错误信息,设置请求头(如获取客户端的版本等等,请求头是可设置可不设置的)
//
// ViewController.m
// 02掌握-NSURLConnection发送POST请求
//
// Created by 朝阳 on 2017/12/2.
// Copyright © 2017年 sunny. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
/*
1. GET和POST的主要区别表现在数据传递上
GET
在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
http://ww.test.com/login?username=123&pwd=234&type=JSON
由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
POST
发给服务器的参数全部放在请求体中
理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
2. GET 和 POST的选择
选择GET和POST的建议
如果要传递大量数据,比如文件上传,只能用POST请求
GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
如果仅仅是索取数据(数据查询),建议使用GET
如果是增加、修改、删除数据,建议使用POST
*/
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//1. 确定请求路径
NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"];
//2. 创建可变请求对象(NSURLRequest不可变请求对象内部:有默认的SET请求方法和SET请求头)
NSMutableURLRequest *requestM = [NSMutableURLRequest requestWithURL:url];
//3. 修改请求方法,POST必须大写
requestM.HTTPMethod = @"POST";
// 设置属性: 请求超时(当请求服务器超过10s,就算请求失败!)
requestM.timeoutInterval = 1.0;
// 设置属性: 请求头内容
[requestM setValue:@"ZY" forHTTPHeaderField:@"User-Agent"];
//4. 设置请求体信息,字符串--->NSData
requestM.HTTPBody = [@"username=520it&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
//5. 发送请求
[NSURLConnection sendAsynchronousRequest:requestM queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
//6. 解析数据,NSData--->NSString
// 打印响应体
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}];
}
@end
注意:
发送POST请求. 需要使用
可变请求对象
修改请求方法为POST
设置请求头内容
设置请求体信息