根据后台要求选择GET请求或者POST请求,GET请求不常有这里就不写了,同步请求也不常用,这里也不写了
使用NSURLConnection发送POST异步请求
NSURLConnection的常用类
(1)NSURL:请求地址
(2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法、请求头、请求体
(3)NSMutableURLRequest:NSURLRequest的子类
(4)NSURLConnection:负责发送请求,建立客户端和服务器的连接。发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据
使用NSURLConnection发送请求的步骤很简单
(1)创建一个NSURL对象,设置请求路径(设置请求路径)
(2)传入NSURL创建一个NSURLRequest对象,设置请求头和请求体(创建请求对象)
(3)使用NSURLConnection发送NSURLRequest(发送请求)
示例:
1.设置请求路径
NSURL *URL=[NSURL URLWithString:@”http://192.168.1.1:8080/XXXX/XXXX“];//不需要传递参数
2.创建请求对象
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默认为get请求,下面需要改为POST
request.HTTPMethod=@”POST”;//设置请求方法
request.timeoutInterval=5.0;//设置请求超时为5秒
3.设置请求体
NSString *str=[NSString stringWithFormat:@”需要加入的参数”];
把拼接后的字符串转换为data,设置请求体
request.HTTPBody=[str dataUsingEncoding:NSUTF8StringEncoding];
客户端类型,只能写英文,根据后台文档要求
[request setValue:@”ios+android” forHTTPHeaderField:@”User-Agent”];
发送异步请求
[NSURLConnection sendAsynchronousRequest:request queue:queue c[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//当请求结束的时候调用(有两种结果,一个是成功拿到数据,也可能没有拿到数据,请求失败)
if (data) {//请求成功
NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSLog(@"%@",dict);//返回的数据
}else //请求失败
{
NSLog(@"%@",connectionError);
}
}];
使用NSURLSession发送网络请求
由于iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。
1.创建会话对象
NSURLSession *session = [NSURLSession sharedSession];
2.根据会话对象创建task
NSURL *url = [NSURL URLWithString:@”http://192.168.1.1:8080/XXXX/XXXX“];
3.创建可变的请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
4.修改请求方法为POST
request.HTTPMethod = @”POST”;
5.设置请求体
request.HTTPBody = [@”需要发送的参数” dataUsingEncoding:NSUTF8StringEncoding];
6.根据会话对象创建一个Task(发送请求)
/*
第一个参数:请求对象
第二个参数:completionHandler回调(请求完成【成功|失败】的回调)
data:响应体信息(期望的数据)
response:响应头信息,主要是对服务器端的描述
error:错误信息,如果请求失败,则error有值
*/
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
8.解析数据
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@",dict);
}];
7.执行任务
[dataTask resume];
}