2013-08-02 3 views
0

서버가 유효한 JSON 응답을 보내지 못했을 때 responseString을 얻는데 어려움을 겪고 있습니다 (일부 PHP 변수가 잘못되었거나 잘못되었습니다). 나는이 같은 AFNetwoking에서 AFJSONRequestOperation을 사용하고 있습니다 :JSON이 AFJSONRequestOperation으로 실패했을 때 responseString을 얻는 방법

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id responseObject) { 
     NSLog(@"object: %@", responseObject); 
    } 
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id responseString) { 
     NSLog(@"failure: %@", responseString); 
    } 
]; 

responseString 실패의 경우입니다 nil 항상이다. 내가 문서 (http://cocoadocs.org/docsets/AFNetworking/1.3.1/Classes/AFJSONRequestOperation.html#//api/name/JSONRequestOperationWithRequest:success:failure :)를 읽으려고했을 때 나는 실패가 세 가지 논증을 쓴다는 것을 발견했다. (그러나 실제로는 네 번째, 네 번째는 항상 없다.) 이 경우 응답을 문자열로 가져 오는 간단한 방법이 있습니까?

+0

어떤 반응이 나타나면 실패할까요? – icodebuster

+0

응답 개체가 나타내는 콘텐츠 길이는 얼마입니까? – Wain

+0

2013-08-02 21 : 06 : 12.250 app [44769 : c07] <0x7b3d720 ISWebServiceManager.m : (79)> responseCode : 200, 오류 : 작업을 완료 할 수 없습니다. (코코아 오류 3840) (null) 응답에서 콘텐츠 길이를 얻는 방법은 무엇입니까? – patryk

답변

0

responseStringnil 인 경우 서버에서 데이터를받지 못했거나 데이터를 사용하여 유효한 NSString 개체를 만들 수 없습니다.

NSJSONSerialization 오류에 해당하는 Cocoa error 3840의 소리에 의해 서버가 실제로 빈 응답을 다시 보내고있는 것 같습니다.

+0

유감스럽게도 귀하의 답변 전체가 사실이 아니며 JSON 직렬화가 실패하지만 응답이 비어 있지 않습니다 (심지어 print ('something'); die()와 같은 응답을 webservice에 넣기도했습니다. 응답 문자열은 항상 nil입니다 ...) – patryk

+0

@patryk 응답을 어떻게 확인하고 있습니까? '말장난 '을 사용하고 있습니까? Charles.app, Wireshark 또는 비슷한 것을 사용하여 시뮬레이터에서 들어오는 HTTP 트래픽을 스니핑 하시겠습니까? – mattt

+0

나는 AFNetworking 호출과 동일한 요청 매개 변수를 가진 GraphicalHTTPClient (appstore에서 사용 가능)를 사용하고 있습니다. – patryk