Ios NSURLConnection、NSMutableData&;可可错误3840

Ios NSURLConnection、NSMutableData&;可可错误3840,ios,cocoa-touch,nsurlconnection,nsjsonserialization,nsmutabledata,Ios,Cocoa Touch,Nsurlconnection,Nsjsonserialization,Nsmutabledata,我有一个标准的异步NSURLConnection操作和从web服务加载json的NSMutableData - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { _responseData = [[NSMutableData alloc] init]; } - (void)connection:(NSURLConnection *)co

我有一个标准的异步NSURLConnection操作和从web服务加载json的NSMutableData

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse       *)response
{
     _responseData = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [_responseData appendData:data];
}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   NSError *error;
   NSDictionary *response = [NSJSONSerialization JSONObjectWithData:_responseData                                                           
                                                            options:NSJSONReadingAllowFragments
                                                              error:&error];

    _responseJson = response;

}
大多数情况下,它都可以完美地工作,但是对于大小不确定的json有效负载,我会得到Cocoa错误3840(我已经验证了json的有效性)。有趣的是,当我将原始数据记录到

-connectionDidFinishLoading: 
它不会一次记录所有数据,当方法中的逻辑继续执行时,原始数据继续以交错方式加载到控制台中

 -stringFromData:encoding:
当控制台记录交错输出时,也返回nil。
实际有效负载只有约0.25mb。我尝试了[[NSMutableData alloc]initWithCapacity:],得到了相同的结果

在开始下载之前,请尝试分配_responseData。但是,为了处理重定向,您应该清除didReceiveResponse中的数据,并确保首先通过检查statusCode来检查/记录错误(在转换到NSHTTPURLResponse后)。在启动连接之前分配_responseData与didReceiveResponse中没有区别。为了清晰起见,我从发布的示例中删除了响应处理逻辑。发现了问题。