GET/POST请求的使用《极客学院 --AFNetworking 2.x 网络解析详解--2》学习笔记

简介:

AFNetworking是开源代码排名第一的开源库。

GET请求的请求正文 一般都是明文显示的,携带的数据量小。

POST用于处理复杂的业务,并不用明文的请求,其实POST请求可以携带更多的参数,只是不明文显示,所以我们在有的时候,有的网址你是看不到GET请求的网址有?以及?后面携带的明文请求数据。

抓包工具:网址:http://www.cnblogs.com/YouXianMing/p/4544824.html

测试的网址:

// http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo
// http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10

这两个测试的网址,可以点击进去,看看数据。打开抓包工具,可以看到相关的信息:

这里是请求携带的信息。也就是所谓的请求正文。

复制代码
 1 #import "ViewController.h"  2 #import "AFNetworking.h"  3  4 @interface ViewController ()
 5  6 @end  7  8 @implementation ViewController
 9 10 - (void)viewDidLoad {
11  [super viewDidLoad];
12 13 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
14 15 16 17 // 设置回复内容信息 这里我们一般需要这个设置,不然我们解析网络的时候会出错 18 manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
19 20 AFHTTPRequestOperation *httpOperation = [manager GET:@"" 21  parameters:nil
22 success:^(AFHTTPRequestOperation *operation, id responseObject) {
23 24  }
25 failure:^(AFHTTPRequestOperation *operation, NSError *error) {
26 27  }];
28 }
29 30 - (void)didReceiveMemoryWarning {
31  [super didReceiveMemoryWarning];
32 // Dispose of any resources that can be recreated. 33 }
34 35 @end
复制代码

对第二个网址进行一个简单的GET请求,这里的警告 是我忘记删除前面不用的引用的指针变量了:

看抓包工具,是Json Text:

但是有时候项目中请求的格式不是JSON Text ,那么我们怎么处理呢?AFNetworking提供给我们的方法 请求序列化 ,在Networking.m中可以找到封装好的方法:

但是我们代码中不是用这个方法,而是直接用原类库中的方法:

manager.requestSerializer = [AFHTTPRequestSerializer serializer];

当我们这么设置的时候:

 //请求的序列化
 manager.requestSerializer = [AFHTTPRequestSerializer serializer];
 //我们 还可以 请求的 结果 序列化 专业的说法:设置回复的序列化
 manager.responseSerializer = [AFHTTPResponseSerializer serializer];

那么返回的responseObject就是二进制数据:

然后通过字符串转格式,转为文本格式,返回的就是JSON数据:

如果在之前,请求的回复序列化上 ,直接设置为AFJOSNResponseSerializer 就直接输出的是 JSON数据的文本格式:

如果项目中返回的数据是xml数据,那么可以用这个设置返回的序列格式:

接下来演示一下POST请求:

先打开一个网址链接: http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo

>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<

然后抓包:

看的出来这个网页是POST请求,携带的参数就是我随意输入的手机号码。但是在请求的正文看不到后面的 ?以及 ?后面的参数。因为这个POST请求正文隐藏起来了,不设置为明文。

然后我们来用POST请求本文开头提供的那个网址:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo

获取请求参数数据。

Copy Request就能获取mobileCode=18720988888&userID=

但是要注意,这个返回的是xml数据:

如果还是用manager.responseSerializer = [AFJSONResponseSerializer serializer];是会出错的,想试一试可以试试,返回错误是因为,那个网站返回的事xml数据,但是解析序列化用的是json是解析不了的,所以要改为manager.responseSerializer = [AFXMLParserResponseSerializer serializer];就不会出错了:


相关文章
|
1月前
|
JSON 数据格式
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
26 0
【计算机网络】如何让客户端构造一个HTTP请求-2
【计算机网络】如何让客户端构造一个HTTP请求-2
【计算机网络】如何让客户端构造一个HTTP请求-2
|
3月前
|
存储 前端开发 JavaScript
【计算机网络】如何让客户端构造一个HTTP请求-1
【计算机网络】如何让客户端构造一个HTTP请求-1
【计算机网络】如何让客户端构造一个HTTP请求-1
|
2月前
|
存储 网络协议 Linux
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
36 0
|
29天前
|
安全 JavaScript 前端开发
若依实现单点登录(解析请求链接中的参数做鉴权认证)
若依实现单点登录(解析请求链接中的参数做鉴权认证)
17 0
|
30天前
|
网络协议 网络安全 API
Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应
Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应
43 1
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
28 1
|
1月前
|
小程序 前端开发 程序员
【微信小程序】-- 网络数据请求(十九)
【微信小程序】-- 网络数据请求(十九)
|
3月前
|
存储 前端开发 Java
Springboot使用参数解析器HandlerMethodArgumentResolver,解析请求头里的数据
HandlerMethodArgumentResolver 是 Spring MVC 中的一个接口,它允许你自定义方法参数的解析过程。当处理请求时,Spring MVC 需要将请求中的信息映射到控制器方法的参数上,而 HandlerMethodArgumentResolver 允许你在这个过程中进行自定义操作。
|
3月前
|
JSON 前端开发 Java
深入解析SpringBoot的请求响应机制
深入解析SpringBoot的请求响应机制

推荐镜像

更多