2014-01-09 8 views
16

私は必要な情報を含む単純な文字列で応答するPOSTを通じてサーバーと通信するのにAFNetworkingを使用しています。しかし、AFNetworkingは私が私の要求を実行したときに、私はこのエラーを取得するために、すべての応答はJSON形式であることを期待しているようですAFNetworking(JSONなし)のPOST要求から単純な文字列を読み取る方法

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager POST: MY_URL 
    parameters: MY_PARAMETERS 
     success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     //do something 
     } 
     failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     //etc. 
     }]; 

エラードメイン= NSCocoaErrorDomain私は、次のコードを使用していますコード= 3840 "操作が 完了できませんでした(ココアエラー3840)。"(JSONテキストが配列または オブジェクトとオプションでフラグメントが設定されないようにすることができませんでした)UserInfo = 0x1566eb00 {NSDebugDescription = JSON text did配列やオブジェクトで始まらず、フラグメントを許可しない場合は オプション}

AFNetworkingは、レスポンスがJSONオブジェクトではないことをどのように伝えることができますか?私はAFHTTPClientを含む何かを見ましたが、それはもうAFNetworkingの一部ではないようです。

答えて

41

応答を処理する方法は、AFHTTPRequestOperationManagerまたはAFHTTPSessionManagerなどです。

manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

次に、あなたのsuccessブロックに、あなたは文字列にNSDataを変換することができます:

NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 

はあなたを変換熟考することをお勧めします、と言ったPOSTを呼び出す前に、次の操作を行うことができますJSONレスポンスを返すようにWebサービスを設定します(有効なレスポンスとサーバーエラーの区別)。

+0

ワンダフル以下のような応答の記述の詳細を取得することができ、これは、私はあなたが感謝の交尾、命の恩人だ –

+0

必要なものだけです! – cesarferreira

+0

欲しい私はこの答えにさらに投票を与えることができます!ありがとう!!!!!! – Pach

0
NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]); 

あなたは

NSLog(@"JSON: %@", [responseObject description]); 
関連する問題