开发者

NSURLConnection downloads only the first 567 bytes?

开发者 https://www.devze.com 2023-01-18 06:45 出处:网络
I\'m trying to download http://www.vesseltracker.com/earth/vesseltrackerlight.kmz but am not getting all the bits and pieces.

I'm trying to download http://www.vesseltracker.com/earth/vesseltrackerlight.kmz but am not getting all the bits and pieces.

I tried:

  NSData *data = [NSData dataWithContentsOfURL: serverURL options: 0 error: &error];

to no avail

then switched to

- (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 开发者_StackOverflowwhen 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];
}

But I am out of luck. It always takes 567 bytes (should be around 4k) I think it may start to decompress and fail....


I downloaded the URL you listed with Safari and it is only 567 bytes long. Are you basing your "4k" expectation on what the Finder list view says? That display is only approximate due to file allocation block sizes... The actual byte count of the file is displayed in parenthesis behind that value in the "Get Info..." window for the file.

0

精彩评论

暂无评论...
验证码 换一张
取 消