我访问RESTFUL网址并获取结果。结果是JSON。我通过以下方式将响应转换为字符串:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *json = [[NSString alloc] initWithBytes:[self.receivedData mutableBytes] length:[self.receivedData length] encoding:NSUTF8StringEncoding];
json变量的值为0x0。当我将鼠标悬停在它上面时,我会看到<Invalid CFStringRef
&gt;。我该怎么调试这个来说明它为什么无效?我在A JSON解析器中通过浏览器呈现给出的JSON。检查结果很好。
通过在URL中输入ID来返回结果。其他ID返回结果没有问题。结果集相当大。
答案 0 :(得分:2)
首先,我会使用initWithData:encoding:
来设置NSString。差别很小,但这种方法是有原因的。
然后,我会做一个self.receivedData
的hexdump,看看那里有什么。如果该数据未正确UTF8编码,则initWithData:encoding:
将失败。
(Google for NSData hex dump以查找其他人的实用程序功能来执行此操作)
我发现有时网络服务的编码很邋。所以我通常会实现这样的后备:
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];
}
}
这是必要的,但许多Web服务没有正确编写或配置。
答案 1 :(得分:1)
使用NSLog
查看字节。