我正在修复现有项目中的错误。问题是 AFHTTPClient 期望一个有效的 JSON 响应,但服务器返回一些像 ""\" Operation complete\"" 之类的乱码(所有引号和括号都在返回中)。这导致操作失败,并命中失败块,因为它无法解析响应。尽管如此,服务器正在返回状态码 200,并且很高兴操作完成。
我有一个像这样扩展 AFHTTPClient 的类(从我的 .h 文件中提取)
@interface AuthClient : AFHTTPClient
//blah blah blah
@end
在我的实现文件中,类的初始化如下:
- (id)initWithBaseURL:(NSURL *)url{
if (self = [super initWithBaseURL:url]) {
self.parameterEncoding = AFFormURLParameterEncoding;
self.stringEncoding = NSASCIIStringEncoding;
[self setDefaultHeader:@"Accept" value:@"application/json"];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
}
return self;
}
我正在拨打的电话是在上面提到的课程中完成的,并且发生如下:
- (void)destroyToken:(NSString *)token onCompletion:(void (^)(BOOL success))completion onFailure:(void (^)(NSError *error))failure{
[self postPath:@"TheServerURL" parameters:@{@"token": token} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSError *error;
//Do some stuff
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Don't want to be here.
}];
}
在失败块内,错误对象的 _userInfo 部分中将返回错误,如下所示:
[0] (null) @"NSDebugDescription" : @"JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。"
错误代码是 3480。
从谷歌搜索我收集到我需要设置类似 NSJSONReadingAllowFragments 的东西,但我不确定当前设置的方式/位置。有没有人有任何想法?