2013-08-27 14 views
0

我试图计算一个多形式上传的有效载荷内容-MD5标头:Calc的内容-MD5在AFNetworking

NSURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/upload" 
parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) { 
    [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.png" 
mimeType:@"image/png"]; 
}]; 

我试着读HTTPBodyStream

if ([request HTTPBodyStream]) { 
    NSInteger result; 
    uint8_t buffer[1024]; 
    while((result = [[request HTTPBodyStream] read:buffer maxLength:1024]) != 0) 
    { 
     if(result > 0) {   
      [data appendString:[NSString stringWithUTF8String:(char *)buffer]]; 

     } else {...} 
    } 

但我最终陷入无限循环。有没有办法做到这一点?

UPDATE

[[request HTTPBodyStream] streamError]while循环结束返回null如果我打破while循环,如果result < 0,但是流将是不完整的。

+0

我假设你'其他{...}'从循环中打破? –

+0

是的,可能。但是从文档中可以看到,“负数表示操作失败”。如果因为我没有阅读网络而失败? –

+0

我不确定'NSURLConnection'是否允许从'file://'url(我假设你是这个意思)读取数据。如果你得到0或者<0,你需要从循环中断开。 –

回答

0

如果使用hasBytesAvailable & &如果读取小于最大缓冲区大小(1024),则表示已达到EOF。

`而([要求HTTPBodyStream] hasBytesAvailable] & & [请HTTPBodyStream]阅读:缓冲区最大长度:1024])== 1024)”

+0

除非我的理解错误,缓冲区只在'read:buffer'方法期间暂时存在,并且不包含整个内容? –

+0

此外,结果是<0,这是一个'负数表示操作失败。' –

+0

'0'表示缓冲区已到达; 'A'负数表示操作失败。 – siarheibrazil

相关问题