06-記錄網路請求Request failed: unacceptable content-type: text/plain(AFNetworking)

weixin_34007886發表於2017-09-05

在使用AFN時報錯:

Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/plain" UserInfo={com.alamofire.serialization.response.error.response= { URL: https://xxxxxxxxxxxxxxxxx } { status code: 200, headers {"Cache-Control" = "no-cache";"Content-Length" = 117;"Content-Type" = "text/plain;charset=UTF-8";Date = "Fri, 05 Feb 2016 11:22:23 GMT";Expires = "Thu, 01 Jan 1970 00:00:00 GMT";Pragma = "No-cache";Server = "nginx/1.6.1";"api-server-ip" = "10.75.2.83";} }

報錯的原因大概是:text/plain是一種不可接收的型別
問題分析:

以HTTP協議為例:客戶端向伺服器傳送請求的時候包括請求頭和請求體請求體就是我們一般說的請求引數,伺服器收到請求後就會響應請求,伺服器反饋回來的響應也包括響應頭和響應體。響應體就是我們說的反饋回來的資料,響應頭就是反饋回來響應體的內容的型別,也就說客戶端收到響應後,第一時間是處理響應頭,在處理響應體。而(AFNetworking)幫我們處理響應頭的時候,不能解析資料型別,也就是AFNetworking能處理的content-type沒有text/plain型別,所以AFNetworking就報錯。

解決辦法:
找到AFNetworking中的AFURLResponseSerialization.m檔案

-(instancetype)init {
self = [super init];
if (!self) {
return nil;
}
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
return self;
}
在self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];中加入@"text/plain"變成
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/plain", nil];

相關文章