AFJSONRequestSerializer 和 AFHTTPRequestSerializer 的区别
Difference between AFJSONRequestSerializer and AFHTTPRequestSerializer
我的请求对 AFJSONRequestSerializer
有效而对 AFHTTPRequestSerializer
无效的实际原因是什么?
我设置了
responseSerializer.acceptableContentTypes?.insert("application/json")
对于 AFHTTPRequestSerializer
它不起作用,但应该。
我只是发送简单的字典:
{
"approval_required" = 1;
birthdate = "2016-03-11";
gender = male;
name = Bartolo;
password = password1234;
username = "super user";
}
Here是类似的问题,但是没有解释为什么是这样的。
谁能解释一下?
acceptableContentTypes
与请求的格式无关,即是HTTP请求还是JSON请求。请求序列化程序的基本职责是以指定格式创建请求。因此,requestSerializer
的选择决定了您是在创建 HTTP 请求(例如 application/x-www-form-urlencoded
的 Content-Type
)还是 JSON 请求(例如 Content-Type
application/json
). acceptableContentTypes
仅允许请求指定您的应用将接受何种格式的响应。 (而且,坦率地说,您不应该指定 acceptableContentTypes
,而应该使用正确的 responseSerializer
。)但是请求格式和接受的响应格式是完全不同的两种东西。事实上,仅接受 HTTP 请求并仅提供 JSON 响应的 Web 服务并不少见。
在您的情况下,听起来您有一个正在等待 JSON 请求的网络服务。当您指定 AFHTTPRequestSerializer
时,请求将不是 JSON 格式并且可能无法理解。并且指定 acceptableContentTypes
不会改变请求本身不是 JSON.
的事实
顺便说一下,Charles or Wireshark 之类的工具对于调试网络代码非常有用,并且有助于诊断这两种请求的差异。如果您使用其中一种工具观看原始 requests/responses,您会发现其中的差异。
我的请求对 AFJSONRequestSerializer
有效而对 AFHTTPRequestSerializer
无效的实际原因是什么?
我设置了
responseSerializer.acceptableContentTypes?.insert("application/json")
对于 AFHTTPRequestSerializer
它不起作用,但应该。
我只是发送简单的字典:
{
"approval_required" = 1;
birthdate = "2016-03-11";
gender = male;
name = Bartolo;
password = password1234;
username = "super user";
}
Here是类似的问题,但是没有解释为什么是这样的。
谁能解释一下?
acceptableContentTypes
与请求的格式无关,即是HTTP请求还是JSON请求。请求序列化程序的基本职责是以指定格式创建请求。因此,requestSerializer
的选择决定了您是在创建 HTTP 请求(例如 application/x-www-form-urlencoded
的 Content-Type
)还是 JSON 请求(例如 Content-Type
application/json
). acceptableContentTypes
仅允许请求指定您的应用将接受何种格式的响应。 (而且,坦率地说,您不应该指定 acceptableContentTypes
,而应该使用正确的 responseSerializer
。)但是请求格式和接受的响应格式是完全不同的两种东西。事实上,仅接受 HTTP 请求并仅提供 JSON 响应的 Web 服务并不少见。
在您的情况下,听起来您有一个正在等待 JSON 请求的网络服务。当您指定 AFHTTPRequestSerializer
时,请求将不是 JSON 格式并且可能无法理解。并且指定 acceptableContentTypes
不会改变请求本身不是 JSON.
顺便说一下,Charles or Wireshark 之类的工具对于调试网络代码非常有用,并且有助于诊断这两种请求的差异。如果您使用其中一种工具观看原始 requests/responses,您会发现其中的差异。