AFN默认请求和响应的处理

1.默认的响应的解析

1.1 AFN默认不支持接受text/html数据类型,只需要增加即可

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];

1.2 AFN默认把所有获取的数据当做JSON来反序列化

1.2.1 如果使用AFN或取非JSON数据,一定要修改AFN默认的反序列化操作,让其返回原始的二进制,程序员可以根据数据具                  体的格式自行反序列化

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

例:

- (void)loadHTMLData { // 极其少见

// 1.请求地址

NSString *URLString = @"http://www.baidu.com";

// 2.获取manager

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 2.1 增加AFN支持的文件类型

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];

// 2.2 如果使用AFN或取非JSON数据,一定要修改AFN默认的反序列化操作,让其返回原始的二进制,程序员可以根据数据具体的格式自行反序列化

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

NSString *html = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

NSLog(@"%@ %@",[responseObject class],html);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"%@",error);

}];

}



正常情况:

- (void)loadJSONData {

// 1.请求地址

NSString *URLString = @"http://news.coolban.com/Api/Index/news_list/app/2/cat/0/limit/20/time/1457168894/type/0";

// 2.封装请求参数

NSMutableDictionary *parameters = [NSMutableDictionary new];

parameters[@"channel"] = @"appstore";

parameters[@"uuid"] = @"19C2BF6A-94F8-4503-8394-2DCD07C36A8F";

parameters[@"net"] = @"5";

parameters[@"model"] = @"iPhone";

parameters[@"ver"] = @"1.0.5";

// 3.获取manager,

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 3.1 增加AFN支持的文件类型

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];

// 4.发送请求

[manager GET:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

NSLog(@"%@ %@",[responseObject class],responseObject);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"%@",error);

}];

}



 2.默认的请求的解析

2.1 AFN默认只能向服务器发送普通的二进制,不支持发送JSON

2.1.1修改AFN默认的请求解析,让AFN支持发送JSON

manager.requestSerializer = [AFJSONRequestSerializer serializer];

例:

- (void)postJSON { // 很少见

// 1.请求地址

NSString *URLString = @"http://localhost/php/upload/postjson.php";

// 2.使用字典,封装要发送给服务器的JSON数据

NSDictionary *parameters = @{@"name":@“1111"};

// 3.获取网络会话

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 3.1 修改AFN默认的请求解析,让AFN支持发送JSON

manager.requestSerializer = [AFJSONRequestSerializer serializer];

[manager POST:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

NSLog(@"%@ %@",[responseObject class],responseObject);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"%@",error);

}];

}

时间: 2024-10-03 22:38:48

AFN默认请求和响应的处理的相关文章

请求和响应。

之前先复习: 1.Servlet: Servlet接口. MyServlet extends HttpServlet. (HttpServlet继承自GenericServlet,GenericServlet实现了Servlet接口.) 2.java web的 servlet技术: Java程序和页面之间的桥梁.Servlet对象放在tomcat web服务器,web容器,servlet容器. 3.调用.当请求出现时,tomcat根据映射路径找到对应的类,创建对应的对象,调用父类写好的servi

Postman工具——请求与响应

两个内容: Request 请求和 Response 响应,下面就开始了. 一.Request 请求 Request 请求,我们只介绍常用的四种:GET.POST.PUT.DELETE,其他类型的就不展开介绍了.另外,我们今天测试的项目是基于 RESTful API 规范的,现在已经成为主流了,有兴趣的同学可以研究下. 1.1 GET 请求 对于 GET 请求来说,我们一般是用来查询数据,返回一个数组或对象.RESTful API 的一个好处就是我们根据不同级别的访问路径,会自动判别返回的数据类

Servlet 之请求,响应,缓存以及乱码

JavaWeb中,Servlet的请求,响应对象有很多实用的api,此处依据http协议中请求行,请求头,请求体以及响应行,响应头,响应体的思路,对这些api以及相关事项做个整理,最后总结一下乱码的相关处理. 响应行 响应行格式为"协议 状态码 状态码信息",这里主要就是状态码的操作,如果是比较正式的写法,应该使用HttpServletResponse接口中所定义的状态码,如: setStatus(404) setStatus(HttpServletResponse. SC_NOT_F

Django REST框架-请求与响应

用前面的那个文件,继续填写 教程2:请求和响应 从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象 REST框架引入了Request扩展常规的对象HttpRequest,并提供了更灵活的请求解析.Request对象的核心功能是request.data属性,这与request.POST使用Web API 相似但更有用. request.POST # Only handles form data. Only works for 'POST' method. r

Node.js之HTTP请求与响应

在C#.OC中也是客户端发起一个请求,服务端作出响应.我们可以把这个过程抽象理解 . 1.客户端给服务端发起请求相当于向服务端写入一个流(writable) 2.服务端读取客户端的流(readable) 3.服务端向客户端作出响应相当于向客户端写入一个流(writable) 4.客户端读取服务端的响应(readable) 整个流程分为两部分一是客户端的处理而是服务端的处理.最主要的还是客户端请求和服务端响应. 一.http.ClientRequest对象 它实现了writable流,可以使用它的

【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP请求信息由3部分组成: 1.请求方法(GET/POST) URI 协议/版本 2.请求头(Request Header) 3.请求正文 下面我们来分析一个http请求: POST http://xg.mediportal.com.cn/health/sms/verify/telephone HTTP

http请求头响应头及状态码列表

HTTP响应头和请求头信息对照表 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联. 请求头标:允许客户端传递关于自身的信息和希望的响应形式. 响应头标:服务器和于传递自身信息的响应. 实体头标:定义被传送资源的信息.即可用于请求,也可用于响应. 根据以上分类的HTTP请求头介绍可以参考此文,本工具

Http请求与响应格式

原文:http://www.cnblogs.com/z941030/p/4699779.html Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定. 请求部分由三部分组成: Requset line:请求行,位于第一行 Request headers:请求消息头,从第二行开始至第一个空行结束 Request body:请求正文,从第一个空行之后的都是正文 响应部分也由三部分组成: Response line:响应行,位于第一行 Response

Tigase开发笔记6:packet流转机制 -> 一条消息(packet)的请求和响应过程解析

初看Tigase的packet内部流转机制一开始不是太明白.里面用到了较多的线程,代码不太看得懂.慢慢的通过一条消息的请求和响应的代码跟踪分析,搞清楚了消息流转的过程. 前言 本文使用Tigase Server version:7.0.2 进行的代码跟踪和分析. 使用工具:IntelliJ IDEA14.1.4 Tigase通过tigase.io包当中的代码读取网络中的字节数组,然后通过tigase.net包当中的类把字节数组转换为字符,最后通过tigase.xml包当中的XML解析器把这些字符