문제

편안한 URL에 액세스하고 결과를 얻습니다. 결과는 JSON에 있습니다. 응답을 다음을 통해 문자열로 바꿉니다.

- (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를 입력하여 결과가 다시 제공됩니다. 다른 IDS는 문제없이 결과를 반환합니다. 결과 세트는 상당히 큽니다.

도움이 되었습니까?

해결책

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

그런 다음, 나는 육각형을 할 것입니다 self.receivedData 실제로 거기에 무엇이 있는지 확인합니다. 해당 데이터가 올바르게 인코딩되지 않은 경우 initWithData:encoding: 실패합니다.

(NSData Hex 덤프 용 Google은 다른 사람들의 유틸리티 기능을 찾으려면이 작업을 수행합니다)

나는 때때로 웹 서비스가 인코딩에 부딪 치는 것을 발견했습니다. 그래서 나는 보통 다음과 같은 폴백을 구현합니다.

NSString* html = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
if (html == nil) {
    html = [[NSString alloc] initWithData: data encoding: NSISOLatin1StringEncoding];
    if (html == nil) {
        html = [[NSString alloc] initWithData: data encoding: NSMacOSRomanStringEncoding];
    }
}

이것이 필요하다는 것은 슬픈 일이지만 많은 웹 서비스가 제대로 작성되거나 구성되지 않았습니다.

다른 팁

사용 NSLog 바이트를 보려면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top