IOS中的网络请求

  1. 使用NSURLConnection的网络请求,最好定义一个类方法,在主线程中直接调用类方法获取请求到的网络数据
  2. //构建类方法--请求网络
  3. + (void)requestData:(NSString *)urlStr
  4. httpMethod:(NSString *)method
  5. params:(NSMutableDictionary *)params
  6. comletionHandle:(void (^)(id result))block
  7. {
  8. //1.构建URL
  9. urlStr = [BASE_URL stringByAppendingString:urlStr];
  10. NSURL *url = [NSURL URLWithString:urlStr];
  11. //2.request构建
  12. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
  13. request.timeoutInterval = 60;
  14. request.HTTPMethod = method;
  15. //判断请求方式
  16. if ([method isEqualToString:@"GET"]) {
  17. //往URL后直接拼接
  18. NSMutableString *paramsStr = [[NSMutableString alloc]initWithString:@"?"];
  19. //拼接样式
  20. //拼接URL---》https://api.weibo.com/2/statuses/home_timeline.json?access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb
  21. //循环拼接参数字典
  22. for (int i = 0; i < params.count; i ++) {
  23. NSString *key = params.allKeys[i];
  24. NSString *value = params[key];
  25. //开始拼接=
  26. [paramsStr appendFormat:@"%@=%@",key,value];
  27. //拼接&符号
  28. //最后一个不再用&符号拼接
  29. if (i < params.count-1) {
  30. [paramsStr appendFormat:@"&"];
  31. }
  32. }
  33. //得到拼接后的URL(将主URL与拼接的URL 拼接在一起得到完整的URL)
  34. request.URL = [NSURL URLWithString:[urlStr stringByAppendingString:paramsStr]];
  35. }else if ([method isEqualToString:@"POST"]){
  36. //将参数添加到请求体中
  37. NSMutableString *paramsStr = [[NSMutableString alloc]initWithString:@""];
  38. for (int i = 0; i < params.count; i ++) {
  39. NSString *key = params.allKeys[i];
  40. NSString *value = params[key];
  41. //开始拼接
  42. [paramsStr appendFormat:@"%@=%@",key,value];
  43. if (i < params.count - 1) {
  44. [paramsStr appendFormat:@"&"];
  45. }
  46. }
  47. //添加到请求体中
  48. //将字符串转化为数据
  49. NSData *data = [paramsStr dataUsingEncoding:NSUTF8StringEncoding];
  50. request.HTTPBody = data;
  51. }
  52. //3.开始请求网络
  53. NSOperationQueue *queue = [[NSOperationQueue alloc]init];
  54. [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
  55. if (connectionError) {
  56. NSLog(@"error----%@",connectionError);
  57. return ;
  58. }
  59. //成功获取数据
  60. //开始解析数据
  61. id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  62. //返回数据
  63. dispatch_async(dispatch_get_main_queue(), ^{
  64. block(result);
  65. });
  66. }];
  67. }
时间: 2024-12-29 23:33:42

IOS中的网络请求的相关文章

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

iOS开发中的网络请求

今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST.今天来看一下四种网络请求的实现方式. 一.同步GET // 1.将网址初始化成一个OC字符串对象 NSString *urlStr = [NSString stringWithFormat:@"%@?query=%@&region=%@&output=json&ak=6E823

iOS中从网络获取数据的几种方法的比较

IOS中获取网络数据一般有三种:1.NSURLCondition(已过时) 2.NSURLSession  3.三方库AFNetWorking NSURLSession 是苹果对NSULRCondition的替代品,NSURLSession比NSURLCondition多了 1.可配置的数据信息NSURLSessionConfiguration,NSURLSessionConfiguration使你可以设置你要请求的数据,通常的设置如缓存,也可以使用默认的配置信息defaultCongurati

swift中第三方网络请求库Alamofire的安装与使用

swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面我们就介绍一个这个库的安装与使用. 一.安装包管理工具CocoaPods 由于国内容易被墙,速度也非常的慢,这里我们使用提供的源 http://ruby.taobao.org/ gem sources --remove https://rubygems.org/ gem sources –a htt

React Native中的网络请求

React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810652 /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 2016-09-28 * fetch请求数据 header 参数 response转json 请求方式 */ import React

iOS学习笔记---网络请求

一.HTTP协议的概念 HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型(c/s) HTTP协议的特点 支持客户/服务器模式(c/s模式) 简单快速 灵活,HTTP允许任意类型的对象进行传输,正在传输的对象类型由Content-type加以标记 iOS学习笔记---网络请求

iOS开发之网络请求(一)ASIHTTPRequest

全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 基于底层的CFNetwork框架,运行效率很高 可惜作者早已停止更新,有一些潜在的BUG无人去解决 很多公司的旧项目里面都残留着它的身影,以前的很多iOS项目都是ASI + SBJson 会不会用ASI,可以算是检验是否为老牌iOS程序员的标准之一 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/d

iOS开发 - AFNetworking网络请求

AFNetworking 什么是AFN 全称是AFNetworking,是对NSURLConnection.NSURLSession的一层封装 虽然运行效率没有ASI高,但是使用比ASI简单 在iOS开发中,使用比较广泛 AFN的github地址 https://github.com/AFNetworking/AFNetworking AFHTTPRequestOperationManager 是AFN中最重要的对象之一 封装了HTTP请求的常见处理 GET\POST请求 解析服务器的响应数据

iOS -读书笔记-网络请求

知道"3次握手"吗?突然想起这个词 什么是3次握手? TCP三次握手/四次挥手详解 这里是3次握手的详细解释 3次握手就是为了可靠的传送数据,TCP(什么是TCP呢?TCP就是一种可靠传输的协议)在发送数据之前,两台主机之间进行3次握手.3次握手完成后才发送数据. 预备知识: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(ur