我使用 NSURLConnection 类的 sendSynchronousRequest:returningResponse:error 方法从网络获取 NSData。
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
我想要做的是检查返回值是否有效。因此,我所做的是将数据的长度与响应标头中的预期长度进行比较,如下所示。
NSData *urlData;
do {
urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if ([urlData length] != [response expectedContentLength]) {
NSLog(@"WTF!!!!!!!!! NSURLConnection response[%@] length[%lld] [%d]", [[response URL] absoluteString], [response expectedContentLength], [urlData length]);
NSHTTPURLResponse *httpresponse = (NSHTTPURLResponse *) response;
NSDictionary *dic = [httpresponse allHeaderFields];
NSLog(@"[%@]", [dic description]);
}
} while ([urlData length] != [response expectedContentLength]);
但是,我不知道是否足以确保返回数据的完整性。我无法检查远程服务器上文件的校验和。
你能分享你的经验或其他提示吗?
谢谢。