GET和POST
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
- GET使用URL或者Cookie传参,而POST将数据放入BODY中。
- GET的URL会有长度上的限制,而POST的数据则可以非常大
- POST比GET安全,因为数据在地址栏上不可见
GET的代码之前学习网络请求的时候写过了,这里直接来写下POST的代码:
- (void)postRequestWithURL:(NSString *)urlStr withZhangHaoString:(nonnull NSString *)zhangHaoString withYanZhengMaString:(nonnull NSString *)yanZhengMaString {
//创建一个URL对象
NSURL *url = [NSURL URLWithString:@"https://eoikf00fjrs25ee.m.pipedream.net"];
//创建请求对象,传入三个参数:第一个参数是URL对象,第二个参数是你的缓存策略,第三个参数是设置请求时间
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
//设置请求方式为POST
[request setHTTPMethod:@"POST"];
//设置请求头信息:传入两个参数,第一个参数是头字段值,第二个参数是头字段名
//头字段值有三种,按需使用:1、application/x-www-form-urlencoded(当后台接收为分开的参数的时候,如?name=liyu&password=123);2、application/json(后台接收为json对象时);3、multipart/form-data(上传文件时)
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//设置请求体
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", zhangHaoString, yanZhengMaString];
//把拼接后的字符串转换为data,设置请求体(data就是请求体)
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
//建立会话session支持三种类型的任务:1、NSURLSessionDataTask:加载数据;2、NSURLSessionDownloadTask:下载数据;3、NSURLSessionUploadTask:上传数据;
NSURLSession *session = [NSURLSession sharedSession];
//创建请求任务
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error) {
NSLog(@"ERROR");
} else {
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
}
}];
//启动任务
[dataTask resume];
}
这里我使用的url是一个模拟后端的网站提供的URL,网站名:RequestBin,谷歌搜就行。