Get,Post请求差异及用法

一、get请求

在iOS下进行网络编程主要分为以下三步

   客户端向服务器发送请求,请求方式有两种:一种get请求,一种post请求。 get请求是将信息直接拼接在URL后面,在真正开发中用到比较多。post请求是将一些比较重要的信息转化为二进制流。在真正开发中post请求常见于验证用户名密码是否正确,给服务器上传数据等。 注意不管是get请求还是post请求都是由后台决定的,程序员可以通过接口文档知道当前的请求方式是get还是post。请求方式不仅仅限于get和post,还有delete和put等,除了get请求可以使用NSUrlRequest之外,其他请求必须使用NSMutableURLRequset,明确的指定当前的HTTPMethod是什么请求。

  •      和服务器建立连接
  •      服务器做出响应
 
 
  1. #pragma mark - get请求
  2. // 1.URL
  3. NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"];
  4. // 2.封装请求
  5. NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10];
  6. // 3.发送请求
  7. NSURLResponse *response = nil;
  8. NSError *error = nil;
  9. // 该方法在iOS9.0之后被废弃
  10. // 下面的方法有3个参数,参数分别为NSURLRequest,NSURLResponse**,NSError**,后面两个参数之所以传地址进来是为了在执行该方法的时候在方法的内部修改参数的值。这种方法相当于让一个方法有了多个返回值
  11. NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
  12. // 错误信息
  13. if(error)
  14. {
  15. NSLog(@"%@", [error localizedDescription]);
  16. // 此处需要解决iOS9.0之后,HTTP不能正常使用的问题,若不做任何处理,会打印“The resource could not be loaded because the App Transport Security policy requires the use of a secure connection” 错误信息。
  17. }
  18. NSError *newError = nil;
  19. NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&newError];
  20. // 获取对应的数据信息
  21. NSArray *array = dictionary[@"news"];
  22. NSDictionary *dic = array[0];
  23. NSLog(@"%@", dic[@"title"]);

iOS9之后http的适配方法(千万记得,不然你会一直纳闷链接是对的,为什么就是会崩或者没有数据):

ios9

二、post请求

post请求和get请求的区别在于,post会将请求参数以请求体的形式存储起来,在向服务器发送请求时,我们不会看到里面的具体参数,例如当我们填写私密表单,或者登录什么账号的时候,自然是不希望别人能看到我们的账号密码,所以这时候采用post请求更为安全。

 
 
  1. #pragma mark - post请求
  2. // 1.获取请求网址
  3. NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?"];
  4. // 2.封装请求
  5. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; // post
  6. // 设置请求方式
  7. [request setHTTPMethod:@"POST"];
  8. // 设置请求体(会把请求的数据转成data,达到用户信息保密的目的)
  9. NSData *data = [@"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" dataUsingEncoding:NSUTF8StringEncoding];
  10. [request setHTTPBody:data];
  11.  
  12. // 3.发送请求
  13. NSURLResponse *response = nil;
  14. NSError *error = nil;
  15. NSData *content = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
  16. NSError *newError = nil;
  17. // 获取数据
  18. NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:content options:NSJSONReadingMutableContainers error:&newError];
  19.  
  20. NSArray *array = dict[@"news"];
  21. NSDictionary *dic = array[0];
  22. NSLog(@"%@", dic[@"title"]);

以上两种请求所获取的数据一致,只是采用了不同的方式而已。

三、总结

关于这节代码里面的细节,比如JSon数据的解析,这一块会在后面讲解里介绍,现在只需要知道它是一种数据结构,可以获取我们需要的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在开发中,GET和POST请求两种最常用的HTTP请求方法。下面是关于如何实现POST请求的一些基本步骤: 1. 创建一个HTTP连接:首先,你需要建立一个与目标服务器的HTTP连接。你可以使用不同的编程语言和框架来实现这一步骤,比如Python中的requests库、Java中的HttpURLConnection类等。 2. 设置请求头:在发送POST请求之前,你需要设置一些请求头信息,包括Content-Type、User-Agent等。Content-Type指定了请求体的数据类型,常见的有application/x-www-form-urlencoded和application/json等。 3. 构建请求体:POST请求需要在请求体中传递数据。具体的数据格式和内容取决于你的业务需求和服务器的要求。通常情况下,你可以使用表单数据或者JSON数据来构建请求体。 4. 发送请求:将构建好的请求体发送到目标服务器。根据你选择的编程语言和框架,你可以调用相应的方法来发送POST请求,比如requests库中的post方法。 5. 处理响应:服务器会返回一个HTTP响应,你需要对响应进行处理。通常情况下,你可以获取响应的状态码、响应头和响应体等信息。根据服务器返回的数据格式,你可以对响应体进行解析和处理。 需要注意的是,POST请求相对于GET请求,更适用于传输敏感或大量数据,因为POST请求将数据包含在请求体中,而GET请求将数据包含在URL中,容易被拦截或暴露。此外,POST请求还可以用于向服务器提交表单、上传文件等操作。 以上是POST请求的基本实现步骤,具体的实现细节可能会因编程语言和框架的不同而有所差异。在实际开发中,你可以根据具体需求和技术栈选择合适的方法和工具来实现POST请求

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值