第三方庫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/jsonapplication/jsontext/javascript,可以添加text/html 

在進行網絡請求時出現3840添加如下語句:

manger.requestSerializer = [AFHTTPRequestSerializer serializer];

manger.responseSerializer = [AFHTTPResponseSerializer serializer];

在進行網絡請求時出現-1011,添加如下語句:manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 

 

3》Server那邊的人沒把head內的 metacontent格式指定好?

[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,可能是參數傳錯了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM