2014-01-09 52 views
16

我正在使用AFNetworking通過POST與服務器進行通信,該POST通過包含我需要的信息的簡單字符串進行響應。我使用下面的代碼:如何從AFNetworking中的POST請求中讀取簡單字符串(無JSON)

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

然而,似乎AFNetworking希望每個響應是JSON格式,因爲我當我執行我的要求得到這個錯誤:

錯誤域= NSCocoaErrorDomain代碼= 3840「該操作不能被 完成(可可錯誤3840.)」(JSON文本沒有以數組開頭,或 對象和選項允許片段未設置。)UserInfo = 0x1566eb00 {NSDebugDescription = JSON文本確實不是從數組或對象開始,並且不允許片段不可選 選項設置。}

我該如何告訴AFNetworking可以確定響應不是JSON對象?我見過一些涉及AFHTTPClient的東西,但它似乎不再是AFNetworking的一部分。

回答

41

您可以告訴AFHTTPRequestOperationManagerAFHTTPSessionManager如何處理響應,例如,調用POST之前,你可以做到以下幾點:

manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

然後在你的success塊,你可以將NSData轉換爲字符串:

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

說了這麼多,你可能要考慮將您的web服務來返回JSON響應,因爲解析這種方式更容易(並區分有效響應和某個服務器錯誤)。

+0

精彩響應描述的細節,這正是我所需要的 –

+0

你是一個生命的救星,感謝隊友! – cesarferreira

+0

希望我能給予更多的投票給這個答案!謝謝!!!!!! – Pach

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

你可以像下面

NSLog(@"JSON: %@", [responseObject description]); 
相關問題