iOS网络--发送get,post请求

一、发送get请求

       1. 准备URL

NSString  * urlStr = @"http://127.0.0.1/hello.php?userName=jack&userPwd=123";

       2.通过URL来get数据

 NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];

      3.对获取的数据进行解析

    NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

这里使用了[NSJSONSerialization JSONObjectWithData: options]这个方法,我们这里通过后台返回的是一个json数组,数组中是一个对象(拿js的话来说),通过这个方法可以将后台返回的json数组数据的二进制格式转换为json数组的格式。在iOS中体现出来就是数组中是一个个的字典。

接下来就是根据自己的需求将字典转换为模型。

二、发送post请求

       首先需要说明的是,iOS中发送post请求的过程比较繁琐哈

      1.准备URL

NSString * urlString = @"http://127.0.0.1/hello.php";
NSURL * url = [NSURL URLWithString:urlString];

     2.创建一个可以修改的请求以发送

     首先这里解释一下为什么创建的是可变的请求,原因是我们会自定义请求的content-type之类的。

//1.创建一个可以修改的请求
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
//2.设置请求的方式
request.HTTPMethod = @"POST";
//设置请求体
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//创建json数据
NSDictionary * jsonDic = @{@"name":@"jack",@"pwd":@"123"};
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];
//设置请求体body
request.HTTPBody = jsonData;

创建了一个可修改的请求之后,首先设置请求的方式为post,大小写不敏感,然后设置这个请求的请求头:发送给服务器数据的类型,这里是json格式的,按道理说这里还需要设置一下数据编码的格式... 然后就创建我们所要发送到服务器端的json数据:首先是创建一个字典,然后将字典序列化为json数据,然后用请求体来包裹我们传输的json数据。

     3.给服务器发送请求

[NSURLConnection  sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
    }];

通过[NSURLConnection  sendAsynchronousRequest:  queue:completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { }] 这个方法来发送post请求,queue表示handler这个block在哪一个线程中执行,我们是在主线程中执行的,如果这个block中有对UI的操作,则应该在主线程中进行。

 

下一节我们将学习获取服务器上的图片的几种方式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值