iOS开发-网络请求

根据后台要求选择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];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值