我利用AFN 想新浪发送post请求会出现上面一个错误
这个错误很常见 报错:AFN 不能接受服务器返回的内容 @“text/plain”
我们先分析一下 再给出解决方案
首先AFN 默认接受的是一个jason字符串
但是新浪给我们返回的却是是一个jeson 字符串
我们上官方的开发者平台 查找 新浪给我们提供的信息
我们可以看到 却是返回的是jason 字符串
这个和http 有关
AFN 发请求给新浪 有请求头和请求体
新浪服务器返回给我们请求头中有个 content-type
但是AFN 不接受
但是新浪的请求头里返回的不是jason
只是普通的字符串 和 文本
但是jason 也是字符串
解决方案 :
我们要设置AFN 让它接受 所以我们要修改AFN 的源码
AFN 默认是下面一个 默认的序列化器
// mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
我们可以看一下 Jason 序列化器是下面几个
点击manager 进入 AFN 库文件
点击上面所指向内容进入
点击上面所指向内容进入
最后 修改
acceptableContentTypes 添加类型
+ (instancetype)serializer {
return [self serializerWithReadingOptions:(NSJSONReadingOptions)0];
}
+ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions {
AFJSONResponseSerializer *serializer = [[self alloc] init];
serializer.readingOptions = readingOptions;
return serializer;
}
- (instancetype)init {
self = [super init];
if (!self) {
return nil;
}
self.acceptableContentTypes = [NSSet setWithObjects: @"text/plain",@"application/json", @"text/json", @"text/javascript", nil];
return self;
}