AFJSONRequestSerializer和AFHTTPRequestSerialize器之间的差异



我的请求对AFJSONRequestSerializer有效而对AFHTTPRequestSerializer无效的原因到底是什么?

我已设置

responseSerializer.acceptableContentTypes?.insert("application/json")

对于AFHTTPRequestSerializer,它不起作用,但应该起作用。

我只是发送简单的字典:

{
"approval_required" = 1;
birthdate = "2016-03-11";
gender = male;
name = Bartolo;
password = password1234;
username = "super user";
}

这里有类似的问题,但没有解释为什么是这样。

有人能解释吗

acceptableContentTypes与请求的格式无关,即是HTTP请求还是JSON请求。请求序列化程序的基本职责是以指定的格式创建请求。因此,requestSerializer的选择决定了您是创建HTTP请求(例如application/x-www-form-urlencodedContent-Type)还是创建JSON请求(例如,application/jsonContent-Type)。acceptableContentTypes只允许请求指定您的应用程序将接受何种格式的响应。(坦率地说,您不应该指定acceptableContentTypes,而应该使用正确的responseSerializer。)但是请求格式和接受的响应格式是完全不同的。事实上,web服务只接受HTTP请求,并且只提供JSON响应,这并不罕见。

在您的情况下,听起来您有一个web服务正在等待一个JSON请求。当您指定AFHTTPRequestSerializer时,请求将不是JSON格式,并且可能无法理解。指定acceptableContentTypes不会改变请求本身不是JSON的事实。


顺便说一句,像Charles或Wireshark这样的工具对于调试网络代码非常有用,并且在诊断这两种类型的请求之间的差异方面会很有启发性。如果你使用其中一个工具来观察原始请求/响应,差异就会显现出来。

相关内容

  • 没有找到相关文章

最新更新