2010-03-14 1 views
0

RESTFUL URL에 액세스하여 결과를 얻습니다. 결과는 JSON에 있습니다. 나는 응답을 문자열로 바꾼다 :NSMutableData가 유효하지 않은 이유를 찾는 방법

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
NSString *json = [[NSString alloc] initWithBytes:[self.receivedData mutableBytes] length:[self.receivedData length] encoding:NSUTF8StringEncoding]; 

json 변수의 값은 0x0이다. 그 위에 마우스를 가져 가면 <Invalid CFStringRef>을 볼 수 있습니다. 어떻게 디버그하여 이것이 유효하지 않은지를 알 수 있습니까? JSON 파서의 브라우저를 통해 제공된 JSON을 렌더링합니다. 그건 괜찮아.

URL에 ID를 입력하여 결과가 반환됩니다. 다른 ID는 문제없이 결과를 반환합니다. 결과 세트는 상당히 큽니다.

답변

2

먼저 NSString을 설정하려면 initWithData:encoding:을 사용합니다. 작은 차이지만 그 방법은 이유가 있습니다.

그런 다음 실제로는 무엇이 있는지 보려면 self.receivedData의 hexdump를 수행합니다. 해당 데이터가 올바르게 UTF8로 인코딩되지 않으면 initWithData:encoding:이 실패합니다.

가끔 웹 서비스가 인코딩 정치 못한 것을 발견했다 (구글을 NSData 16 진수 덤프이 작업을 수행하려면 다른 사람의 유틸리티 기능을 찾을 수 있습니다). 따라서 보통 다음과 같은 대체물을 구현합니다.

많은 경우이 웹 서비스는 제대로 작성되거나 구성되지 않지만 슬픈 일입니다.

+0

감사합니다. 당신의 기술은 확실히 더 좋은 정보를 돌려줍니다. – 4thSpace

1

바이트를 보려면 NSLog을 사용하십시오.

+1

바이트가 데이터를 문자열로 나타내는 경우 0xED에 잘라내어 붙여 넣기하면 매우 쉽게 볼 수 있습니다. http://www.suavetech.com/0xed/0xed.html – nall