开发者

NSurlconncetion received data length always 0 but file saving works

开发者 https://www.devze.com 2023-02-03 09:22 出处:网络
Hi i want to show the received bytes in the console. (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

Hi i want to show the received bytes in the console.


  (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
 [receivedData appendData:data];
 NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[receivedData length]];
    NSLog(@"resourceData length: %d ", [resourceLength intValue]);
 if (file)  { 
        [file seekToEndOfFile];
    } 
 [file writeData:data]; 
}

the file successfully downloads and safed it into docoument dir but the nslog show always resourceData length: 0

receivedata is NSMutableData *receivedData; in the .h file

the strange thing is that the exceptedbytes work well. here the code for that:


- (void)connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse)response {
 localFilename = [[[url2 absoluteString] lastPathComponent] copy];
 NSLog(localFilename); 
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0] ; 
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:localFilename]; 
    [[NSFileManager defaultManager] createFileAtPath:appFile contents:nil attributes:nil];

expectedBytes = [response expectedContentLength]; NSLog(@"content-length: %lli Bytes", expectedBytes); file = [[NSFileHandle fileHandleForUpdatingAtPath:appFile] retain];

if (file) {

    [file seekToEndOfFile];
}

}

开发者_StackOverflow

can somebody help me. i really dont know what i am doing wrong

kind regards

tammo


Have you allocated and initialised receivedData? One usually does

receivedData = [[NSMutableData data] retain];

right after creating an NSURLConnection instance, and then

[receivedData setLength:0];

upon receiving a response via -connection:didReceiveResponse:, and

[receivedData appendData:data];

upon receiving data via -connection:didReceiveData:. This is exemplified in the URL Loading System Programming Guide. If you haven’t instantiated receivedData, it is probably nil and [receivedData length] returns 0 in that case.

0

精彩评论

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

关注公众号