參考地址:
http://blog.csdn.net/dengbin9009/article/details/43485617
在使用AFNetworking 2.0? 的時候本來一切很順暢,但是中途遇到幾個比較坑的地方
這里分享一下爬坑經歷,忘讀者不能速爬坑!
在發送請求后,NSURLSessionDataTask一直報錯
Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html"
經過一番網上排查,網上有人說是AF2.0本身的問題,解析格式不全,所以需要在AF的源文件AFURLResponseSerialization.m中修改代碼就能解決:
修改文件223行
1 // 修改前
2 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil nil];
4 // 修改后
5 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil nil];
筆者試過確實可以,但是AF還在持續更新的類庫,不宜隨意修改,特別是在用了CocoaPods之后,如果之后更新庫,此類錯誤又會重復出現,隨后筆者發現acceptableContentTypes是一個開放的屬性,既然這樣,就證明acceptableContentTypes可以在外部被修改,所以可以在
初始化HttpClient單利的時候改變這一值:
1 - (instancetype)initWithBaseURL:(NSURL *)url {
2? ? if (self = [super initWithBaseURL:url]) {
3
4? ? ? ? self.responseSerializer = [AFJSONResponseSerializer serializer];
5? ? ? ? self.requestSerializer.timeoutInterval = TimeoutInterval;
6? ? ? ? self.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil nil];
7? ? ? ? [self setHTTPHeader];? // 可在此處設置Http頭信息
8? ? }
9? ? return self;
10 }