我的请求对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-urlencoded
的Content-Type
)还是创建JSON请求(例如,application/json
的Content-Type
)。acceptableContentTypes
只允许请求指定您的应用程序将接受何种格式的响应。(坦率地说,您不应该指定acceptableContentTypes
,而应该使用正确的responseSerializer
。)但是请求格式和接受的响应格式是完全不同的。事实上,web服务只接受HTTP请求,并且只提供JSON响应,这并不罕见。
在您的情况下,听起来您有一个web服务正在等待一个JSON请求。当您指定AFHTTPRequestSerializer
时,请求将不是JSON格式,并且可能无法理解。指定acceptableContentTypes
不会改变请求本身不是JSON的事实。
顺便说一句,像Charles或Wireshark这样的工具对于调试网络代码非常有用,并且在诊断这两种类型的请求之间的差异方面会很有启发性。如果你使用其中一个工具来观察原始请求/响应,差异就会显现出来。