web-dev-qa-db-ja.com

(ココアエラー3840。)」(文字0の周りの無効な値。)AFNetworking

GETメソッドを使用してサーバーからファイルを取得すると、次のエラーが表示されます。

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x16e81ed0 {NSDebugDescription=Invalid value around character 0.}

私はさまざまなことを試してみましたが、取得しようとしているファイルのJSON形式と関係があると考えています。

私が使用しているコードは次のとおりです。

_username = @"JonDoe";
NSDictionary *parameters = @{ @"username" : _username};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];

[manager GET:@"http://.........."
  parameters:parameters
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
         NSLog(@"JSON: %@", responseObject);
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         NSLog(@"Error: %@", error);
     }];

私のPOSTメソッドは正常に動作します。GETでこの問題を解決できないようです。アイデアはありますか?ありがとうございます。

28
Jonathan

コメントの議論から判断すると、GET要求は成功したように見えます(応答コード200)が、応答本文はAFJSONResponseSerializerの使用によって要求した有効なJSON(またはJSONフラグメント)ではありません。基本的なAFHTTPResponseSerializerは、JSONではない応答に使用できます。

39
Brad Allred

サーバーから有効な応答があることはかなり確かですが、おそらく最初の{の前にキャラクターがあるため、応答はJSONの有効な形式ではありません。これを試してください:同じURLアドレスをブラウザに手動で入力すると、応答に犯人が表示されます。それが役に立てば幸いです。

3
Santi Pérez