NSURLConnection只下载第567个字节?
问题描述:
我正在尝试下载http://www.vesseltracker.com/earth/vesseltrackerlight.kmz,但没有得到所有零碎。NSURLConnection只下载第567个字节?
我想:
NSData *data = [NSData dataWithContentsOfURL: serverURL options: 0 error: &error];
无济于事
然后切换到
- (void)startDownloadingURL:(NSURL*) url
{
// Create the request.
NSURLRequest *theRequest = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
// create the connection with the request
// and start loading the data
NSLog(@"SNNetworkController.startDownloadingURL [%@]", url);
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
// Create the NSMutableData to hold the received data.
// receivedData is an instance variable declared elsewhere.
receivedData = [[NSMutableData data] retain];
} else {
// inform the user that the download failed.
NSLog(@"SNNetworkController.startDownloadingURL Download failed!");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
// This method is called when the server has determined that it
// has enough information to create the NSURLResponse.
// It can be called multiple times, for example in the case of a
// redirect, so each time we reset the data.
// receivedData is an instance variable declared elsewhere.
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
// Append the new data to receivedData.
// receivedData is an instance variable declared elsewhere.
[receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error
{
// release the connection, and the data object
[connection release];
// receivedData is declared as a method instance elsewhere
[receivedData release];
// inform the user
NSLog(@"SNNetworkController.didFailWithError Download failed! Error - %@",
[error localizedDescription]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// do something with the data
// receivedData is declared as a method instance elsewhere
NSLog(@"SNNetworkController.downloadDidFinish Succeeded! Received %d bytes of data",[receivedData length]);
// release the connection, and the data object
[connection release];
[receivedData release];
}
但我的运气。它总是需要567字节(应该是在4k左右)我认为它可能开始解压缩并失败....
答
我下载了你用Safari列出的URL,它只有567字节长。您是否将“4k”期望放在Finder列表视图所说的内容上?由于文件分配块大小,该显示仅为近似值......文件的实际字节数显示在该文件的“Get Info ...”窗口后面的括号内。
我用curl下载了它,得到了相同的结果,所以它不是WebKit-/Foundation特定的东西;看起来服务器提供的文件实际上只有567字节。 – 2010-09-28 07:32:32