Iphone 当从长度为4000+;的NSData转换时,NSMutableString变为(null);
我正在向某个服务器发送XML请求,并使用NSURLConnection从中获取一些响应数据:Iphone 当从长度为4000+;的NSData转换时,NSMutableString变为(null);,iphone,ios,nsstring,nsurlconnection,nsdata,Iphone,Ios,Nsstring,Nsurlconnection,Nsdata,我正在向某个服务器发送XML请求,并使用NSURLConnection从中获取一些响应数据: -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSMutableString *receivedString = [[NSMutableString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding];
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSMutableString *receivedString = [[NSMutableString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding];
NSLog(@"Size of DATA: %d",[_receivedData length]);
NSLog(@"Body: %@", receivedString);
}
当我的数据长度约为4000时,我通常可以在输出中看到接收到的数据。但当数据长度变大(6000、10000等)时,输出显示我的receivedString变为null
当字符串的长度变大时,如何将数据保存到字符串中?谢谢。您确定您的数据是用
NSUTF8StringEncoding
编码的吗?再次检查返回给您的数据initWithData:encoding:
如果编码未正确表示数据,则返回nil
测试这一点的一个简单方法是使用相同的数据对象,创建一个包含相同数据增量段的字符串,直到它失败,然后查看导致它失败的字节
我敢打赌,一条南方油炸鲶鱼的数据中有一个编码不正确(或不匹配)的字节。如果将NSMutableString更改为NSString,会发生什么?可能与此有关?它是否将长度打印为10000,然后将字符串打印为null?
(receivedString==nil)
是否计算为是?如果您记录[receivedString substringToIndex:500]代码>?这是否也显示为空或实际文本?@JamesPaolantonio,不幸的是相同的。@SVD,不,我尝试了所有类型的编码…是的!例如,如果我发送一个请求,该请求使用短长度的NSData进行响应,它将XML提供给输出:65538Status unknown 65538,将其添加到StatusStringConvertor.cpp.-1-1-1get_request
,这是不同的。您需要实际查看长数据项以确定坏字节。我保证这不是长度本身。你可以创建比10000大得多的字符串。你说得对!我用追踪器检查过。如果响应的大小超过4k,服务器会使用zip压缩响应。非常感谢。很高兴你有你的答案。顺便说一句,这是我最喜欢的两个词——特别是在我的孩子很少使用的情况下。