NSURLConnection загружает только первые 567 байтов? - PullRequest
0 голосов
/ 27 сентября 2010

Я пытаюсь загрузить http://www.vesseltracker.com/earth/vesseltrackerlight.kmz, но не получаю все кусочки.

Я пытался:

  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 байт (должно быть около 4 КБ). Я думаю, что он может начать распаковываться и давать сбой ....

1 Ответ

2 голосов
/ 28 сентября 2010

Я скачал URL, который вы указали в Safari, и он имеет длину всего 567 байт. Вы основываете свое ожидание "4k" на том, что говорит представление списка Finder? Это отображение является приблизительным только из-за размеров блока размещения файлов ... Фактическое количество байтов файла отображается в скобках после этого значения в окне «Получить информацию ...» для файла.

...