首页 > 代码库 > 第三方库AFNetwork的作用和用法详解
第三方库AFNetwork的作用和用法详解
1》默认提交请求的数据是二进制的,返回格式是JSON
请求格式(manager.requestSerializer)
AFHTTPRequestSerializer 二进制格式(NSData)
AFJSONRequestSerializer JSON
AFPropertyListRequestSerializer PList(是一种特殊的XML,解析起来相对容易)
返回格式(manager.responseSerializer)
AFHTTPResponseSerializer 二进制格式(NSData)
AFJSONResponseSerializer JSON
AFXMLParserResponseSerializer XML,只能返回XMLParser,还需要自己通过代理方法解析
AFXMLDocumentResponseSerializer (Mac OS X)
AFPropertyListResponseSerializer PList
AFImageResponseSerializer Image
AFCompoundResponseSerializer 组合
需要修改AFNetworking可接收的Content-Type,前往AFNetworking源代码目录找到AFURLResponseSerialization.m文件将里面的代码:self.acceptableContentTypes =[NSSetsetWithObjects:@"application/json",@"text/json",@"text/JavaScript",nil];
修改为:self.acceptableContentTypes =[NSSetsetWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html”,@"text/plain”,nil];
2》AFNetwork在请求时报错code=-1016 和 3840
在进行网络请求时出现-1016,是因为只支持text/json,application/json,text/javascript,可以添加text/html
在进行网络请求时出现3840,添加如下语句:
manger.requestSerializer = [AFHTTPRequestSerializer serializer];
manger.responseSerializer = [AFHTTPResponseSerializer serializer];
在进行网络请求时出现-1011,添加如下语句:manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
3》做Server那邊的人沒把head內的 meta的content格式指定好?
[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
4》NSUnderlyingError = Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: application/soap+xml"
application/json,application/text都只是设置返回的http报文里面header的内容,最终怎么处理还是看前端javascript,你js里面收到数据后JSON.parse()就是json数据(当然现在Ajax框架比如jQuery都自动parse了),不处理就是纯文本,本质上没什么差别
5》默认响应的格式是JSON,若返回的不是一个JSON文本,可修改成二进制或者XML
注意:responseSerializer使用之前一定要new一次,不然配置的东西无效
manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"text/html",@"text/plain",nil];
manager.responseSerializer=[AFJSONResponseSerializer serializer];
6》AFN在请求时候,老是出现unacceptable content-type: text/html或者 text/plain
在进行网络请求时出现-1016,可能是参数传错了.
第三方库AFNetwork的作用和用法详解