OC网络:HTTP请求的常见方法
HTTP请求的常见方法
- GET
- 所有参数拼接在URL后面,并且参数之间用&隔开
- 比如http://520it.com?name=123&pwd=345
- 传递了2个参数给服务器
- name参数:123
- pwd参数:345
- 没有请求体
- 一般用来查询数据
- 所有参数拼接在URL后面,并且参数之间用&隔开
- 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请求的常见方法相关推荐
- iOS开发之普通网络异步请求与文件下载方法
先来说说普通异步下载方法,分为POST.GET两种 /** GET请求获取数据*/ + (void)getDataWithUrl:(NSString *)strUrl finishBlock:(ECG ...
- IOS之Swift5.x和OC网络请求JSON
IOS之Swift5.x和OC网络请求JSON // // ViewController.m // 基于OC网络解析JSON // // Created by 鲁军 on 2021/3/11. //# ...
- android网络请求库volley方法详解
使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列 ...
- JavaWeb~http请求常见方法/报头header字段Host、User-Agent、Cookie、Referer、Content-type/Http响应解析及状态码
文章目录 http请求方法 GET请求 POST请求 其他请求方法 认识请求报头(header) 如何查看网页Cookie 实现登录功能的其他方法 认识请求正文(body) HTTP响应 认识状态码( ...
- iOS - NetRequest 网络数据请求
1.网络请求 1.1 网络通讯三要素 1.IP 地址(主机名): 网络中设备的唯一标示.不易记忆,可以用主机名(域名). 1) IP V4: 0~255.0~255.0~255.0~255 ,共有 2 ...
- pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法
在python中使用requests 模拟浏览器发送请求数据的方法 如下所示: import requests url='http://####' proxy={'http':'http://#### ...
- [分布式]事务处理的常见方法
处理事务的常见方法有排队法.排他锁.读写锁.MVCC等方式. 排队法 事务处理中最重要也是最简单的方案是排队法,单线程地处理一堆数据. 在Redis中,如果数据全部在内存中,那么单线程处理所有Put. ...
- WEB前端性能优化常见方法
web前端是应用服务器处理之前的部分,前端主要包括:HTML,CSS,javascript,image等各种资源,针对不同的资源有不同的优化方式. 1. 内容优化 (1)减少HTTP请求数:这条策略是 ...
- 微信小程序基础学习(2)- 模板与配置:WXML 模板语法、WXSS 模板样式、全局配置、页面配置、网络数据请求
1. WXML 模板语法 1.1 数据绑定 (1) 数据绑定的基本原则 ① 在 data 中定义数据 ② 在 WXML 中使用数据 (2)在 data 中定义页面的数据 在页面对应的 .js 文件中, ...
最新文章
- Android中AIDL的使用详解
- python编程入门经典实例-总算明了python编程入门经典实例
- 自定义错误代码和提示信息
- ubuntu设置静态ip
- 谈均值、方差、标准差、协方差的概念及意义
- python截图模块_pyscreenshot
- SharePoint Web Service系列: Add或Update其他各种类型的项
- python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)
- Ubuntu1804安装STM32CubeIDE出现的冲突
- mybatis缓存引起的问题
- 加域电脑激活指纹识别
- c语言中函数已有主体,error C2084 函数已有主体(Function already has a body)解决方案...
- 终于,高考的三只靴子落下了...
- 51单片机入门——LED灯
- 空间几何-欧拉角、四元数、重投影误差
- 从排名看主流半导体厂商在3G市场的策略与心态
- java 格式化输出xml_Java格式化输出Xml
- java群发邮件_JAVA邮件群发 - Java-Android-jwebee - BlogJava
- 2019.10.15
- 一. activiti项目的搭建