在我的应用中的一个地方,我使用NSURLConnection初始化异步请求:
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:[self.URLs objectForKey:@"API URL"]]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
apiConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[request release];
并获取结果:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
if (responseData == nil) {
responseData = [[NSMutableData alloc] init];
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
NSLog(@"%s", [data bytes]);
}
问题是有时随机数据会附加到服务器返回的实际数据中。有时,日志消息以及实际输出(在转换为connectionDidFinishLoading:connection
中的NSString对象之后)包含某些标题的某些部分,“CFNetwork”或只是任意字节/字符。
这是一个已知的错误吗?有没有人遇到过这个,知道如何解决这个问题?有什么我可能做错了吗?
答案 0 :(得分:1)
如果将字符串用作c-String(空终止符),则需要附加“0”字符来限制字符串。
来自我的一个项目:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
char temp[] = {0};
[receivedData appendBytes:temp length:1];
// etc your usual code here
}
也给我带来了许多令人头疼的问题。