Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable con
在使用AFNetworking 2.0 ?的時候本來一切很順暢,但是中途遇到幾個比較坑的地方
這里分享一下爬坑經(jīng)歷,忘讀者不能速爬坑逝慧!
在發(fā)送請求后谭网,NSURLSessionDataTask一直報錯:
Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html"
經(jīng)過一番網(wǎng)上排查教藻,網(wǎng)上有人說是AF2.0本身的問題冠骄,解析格式不全,所以需要在AF的源文件AFURLResponseSerialization.m中修改代碼就能解決:
修改文件223行處:
[objc] view plaincopy
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil nil];
為:
[objc] view plaincopy
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil nil];
即可损离!筆者試過確實可以凿蒜,但是AF還在持續(xù)更新的類庫禁谦,不宜隨意修改,特別是在用了CocoaPods之后废封,如果之后更新庫州泊,此類錯誤又會重復(fù)出現(xiàn),隨后筆者發(fā)現(xiàn)acceptableContentTypes是一個開放的屬性漂洋,既然這樣遥皂,就證明acceptableContentTypes可以在外部被修改,所以可以在
初始化HttpClient單利的時候改變這一值:
[objc] view plaincopy
- (instancetype)initWithBaseURL:(NSURL *)url {
if (self = [super initWithBaseURL:url]) {
self.responseSerializer = [AFJSONResponseSerializer serializer];
self.requestSerializer.timeoutInterval = TimeoutInterval;
self.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil nil];
[self setHTTPHeader]; ?// 可在此處設(shè)置Http頭信息
}
return self;
}
備注:這里與你響應(yīng)的網(wǎng)址的類型有關(guān)刽漂,也就是說演训,你請求的網(wǎng)址為@"text/html"。一般不會出現(xiàn)這種情況贝咙,這主要是后臺太水样悟,后臺數(shù)據(jù)生成的有問題。
2.網(wǎng)絡(luò)提示中文
在info.plist中增加Localization native development region String類型 值為China