NSURLConnection将随机字符附加到响应中

时间:2011-05-05 09:46:23

标签: iphone ios4 nsurlconnection

在我的应用中的一个地方,我使用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”或只是任意字节/字符。

这是一个已知的错误吗?有没有人遇到过这个,知道如何解决这个问题?有什么我可能做错了吗?

1 个答案:

答案 0 :(得分:1)

如果将字符串用作c-String(空终止符),则需要附加“0”字符来限制字符串。

来自我的一个项目:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   char temp[] = {0};
   [receivedData appendBytes:temp length:1];

   // etc your usual code here
}

也给我带来了许多令人头疼的问题。