既存のプロジェクトのバグを修正する作業を行っています。問題は、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 のようなものを設定する必要がありますが、現在の設定がどのように/どこにあるのかわかりません。誰にもアイデアはありますか?