HTTP请求的常见方法

  • GET

    • 所有参数拼接在URL后面,并且参数之间用&隔开

      • 比如http://520it.com?name=123&pwd=345
      • 传递了2个参数给服务器
        • name参数:123
        • pwd参数:345
    • 没有请求体
    • 一般用来查询数据
  • POST
    • 所有参数都放在请求体
    • 一般用来修改、增加、删除数据

创建HTTP请求

  • GET
// 请求路径
NSString *urlString = @"http://520it.com?name=张三&pwd=123";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];// 创建URL
NSURL *url = [NSURL URLWithString:urlString];// 创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 设置请求方法(默认就是GET请求)
request.HTTPMethod = @"GET";
  • POST
// 请求路径
NSString *urlString = @"http://520it.com/图片";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];// 创建URL
NSURL *url = [NSURL URLWithString:urlString];// 创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 设置请求方法
request.HTTPMethod = @"POST";// 设置请求体
request.HTTPBody = [@"name=张三&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];

使用NSURLConnection发送HTTP请求

发送同步请求

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
// 这个方法是阻塞式的,会在当前线程发送请求
// 当服务器的数据完全返回时,这个方法才会返回,代码才会继续往下执行

发送异步请求-block

+ (void)sendAsynchronousRequest:(NSURLRequest*) requestqueue:(NSOperationQueue*) queuecompletionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;
// 会自动开启一个子线程去发送请求
// 当请求完毕(成功\失败),会自动调用handler这个block
// handler这个block会放到queue这个队列中执行

发送异步请求-delegate

  • 创建NSURLConnection对象
// startImmediately==YES,创建完毕后,自动发送异步请求
- (instancetype)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately;
- (instancetype)initWithRequest:(NSURLRequest *)request delegate:(id)delegate; // 创建完毕后,自动发送异步请求
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate; // 创建完毕后,自动发送异步请求
  • 发送请求
[connection start];
  • 遵守NSURLConnectionDataDelegate协议,实现协议中的代理方法
// 当接收到服务器的响应时就会调用
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;// 每当接收到服务器返回的数据时就会调用1次(数据量大的时候,这个方法就会被调用多次)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;// 当服务器的数据完全返回时调用(服务器的数据接收完毕)
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;// 当请求失败的时候调用
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
  • 取消请求
[connection cancel];

NSString和NSData的互相转换

  • NSString -> NSData
NSData *data = [@"520it.com" dataUsingEncoding:NSUTF8StringEncoding];
  • NSData -> NSString
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  //发送请求给服务器,加载右侧的数据NSMutableDictionary *params = [NSMutableDictionary dictionary];params[@"a"] = @"list";params[@"c"] = @"subscribe";params[@"category_id"] =@(c.id);[[AFHTTPSessionManager manager] GET:@"http://api.budejie.com/api/api_open.php" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {//字典转模型数组NSArray *users = [XJQRecommendUser objectArrayWithKeyValuesArray:responseObject[@"list"]];//添加当前类别对应的用户组[c.users addObjectsFromArray:users];//刷新表格[self.detailVC reloadData];} failure:^(NSURLSessionDataTask *task, NSError *error) {[SVProgressHUD showErrorWithStatus:@"加载数据失败"];}];

OC网络:HTTP请求的常见方法相关推荐

  1. iOS开发之普通网络异步请求与文件下载方法

    先来说说普通异步下载方法,分为POST.GET两种 /** GET请求获取数据*/ + (void)getDataWithUrl:(NSString *)strUrl finishBlock:(ECG ...

  2. IOS之Swift5.x和OC网络请求JSON

    IOS之Swift5.x和OC网络请求JSON // // ViewController.m // 基于OC网络解析JSON // // Created by 鲁军 on 2021/3/11. //# ...

  3. android网络请求库volley方法详解

    使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列     ...

  4. JavaWeb~http请求常见方法/报头header字段Host、User-Agent、Cookie、Referer、Content-type/Http响应解析及状态码

    文章目录 http请求方法 GET请求 POST请求 其他请求方法 认识请求报头(header) 如何查看网页Cookie 实现登录功能的其他方法 认识请求正文(body) HTTP响应 认识状态码( ...

  5. iOS - NetRequest 网络数据请求

    1.网络请求 1.1 网络通讯三要素 1.IP 地址(主机名): 网络中设备的唯一标示.不易记忆,可以用主机名(域名). 1) IP V4: 0~255.0~255.0~255.0~255 ,共有 2 ...

  6. pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法

    在python中使用requests 模拟浏览器发送请求数据的方法 如下所示: import requests url='http://####' proxy={'http':'http://#### ...

  7. [分布式]事务处理的常见方法

    处理事务的常见方法有排队法.排他锁.读写锁.MVCC等方式. 排队法 事务处理中最重要也是最简单的方案是排队法,单线程地处理一堆数据. 在Redis中,如果数据全部在内存中,那么单线程处理所有Put. ...

  8. WEB前端性能优化常见方法

    web前端是应用服务器处理之前的部分,前端主要包括:HTML,CSS,javascript,image等各种资源,针对不同的资源有不同的优化方式. 1. 内容优化 (1)减少HTTP请求数:这条策略是 ...

  9. 微信小程序基础学习(2)- 模板与配置:WXML 模板语法、WXSS 模板样式、全局配置、页面配置、网络数据请求

    1. WXML 模板语法 1.1 数据绑定 (1) 数据绑定的基本原则 ① 在 data 中定义数据 ② 在 WXML 中使用数据 (2)在 data 中定义页面的数据 在页面对应的 .js 文件中, ...

最新文章

  1. Android中AIDL的使用详解
  2. python编程入门经典实例-总算明了python编程入门经典实例
  3. 自定义错误代码和提示信息
  4. ubuntu设置静态ip
  5. 谈均值、方差、标准差、协方差的概念及意义
  6. python截图模块_pyscreenshot
  7. SharePoint Web Service系列: Add或Update其他各种类型的项
  8. python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)
  9. Ubuntu1804安装STM32CubeIDE出现的冲突
  10. mybatis缓存引起的问题
  11. 加域电脑激活指纹识别
  12. c语言中函数已有主体,error C2084 函数已有主体(Function already has a body)解决方案...
  13. 终于,高考的三只靴子落下了...
  14. 51单片机入门——LED灯
  15. 空间几何-欧拉角、四元数、重投影误差
  16. 从排名看主流半导体厂商在3G市场的策略与心态
  17. java 格式化输出xml_Java格式化输出Xml
  18. java群发邮件_JAVA邮件群发 - Java-Android-jwebee - BlogJava
  19. 2019.10.15
  20. 一. activiti项目的搭建

热门文章

  1. 使用兔兔时比较好的参考网站
  2. RJ45和RJ11接插件定义和有关规定
  3. Notepad++ 下载安装和使用
  4. 矩阵光学 matlab,矩阵光学.doc
  5. 电脑鼠原理与实践学习笔记
  6. win10系统没有电源高性能选项
  7. 灰度直方图均衡化后+Otsu算法
  8. 威尔克姆教程:他他米的偏移系数及分割线
  9. preventExtention、freeze、seal及isExtensible、isFrozen 、isSealed比较
  10. 什么叫linux网络协议栈,我们为什么使用Linux内核的TCP协议栈