AFNetworking 中的 Calc Content-MD5

Posted

技术标签:

【中文标题】AFNetworking 中的 Calc Content-MD5【英文标题】:Calc Content-MD5 in AFNetworking 【发布时间】:2013-08-27 08:45:34 【问题描述】:

我正在尝试为多部分格式上传的有效负载计算 content-md5 标头:

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 ...
    

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

更新

[[request HTTPBodyStream] streamError]while 循环结束时返回null 如果我在result &lt; 0 时中断while 循环,但是流将不完整。

【问题讨论】:

我假设您的 else ... 会中断循环? 是的,可能。但是从文档中,它声明了A negative number means that the operation failed。由于我没有从网络上读取,它应该失败吗? 我不确定NSURLConnection 是否允许从file:// url 读取(我假设这就是您的意思)。如果得到 0 或 【参考方案1】:

如果读取小于最大缓冲区大小(1024),使用 hasBytesAvailable && 怎么样。这意味着到达 EOF。

`while([[request HTTPBodyStream] hasBytesAvailable] && [[request HTTPBodyStream] read:buffer maxLength:1024]) == 1024)'

【讨论】:

除非我理解错误,否则缓冲区暂时只在read:buffer方法期间,不包含整个东西? 另外,结果是 A negative number means that the operation failed. 0 表示已到达缓冲区末尾; A负数表示操作失败。 但是无论如何在读取小于最大字节数的情况下。这是失败的迹象,或者数据块应该是最后的

以上是关于AFNetworking 中的 Calc Content-MD5的主要内容,如果未能解决你的问题,请参考以下文章

css3中的calc()

css3中的calc()

CSS3中的calc()

红移中的 PERCENTILE_CONT()

边框宽度中的CSS calc()?

AFNetworking 2.2.1 中的错误