我使用NSMutableURLRequest将一个base64编码的图片作为post请求的一部分发送到服务器。我在日志中记录的post请求正文和服务器收到的内容不一样。服务器似乎获得了一个被截断的版本,好像连接在中途就中止了。以下是代码:
第一个日志语句显示了正确的数据。我甚至把字符串的base64部分拿到http://www.motobit.com/util/base64-decoder-encoder.asp解码成为jpg,这是正确的图像。第二个日志语句表明长度是正确的(例如,当图片大小为422480时,长度为422624)。
我找不到连接细节或数据有任何问题。手机建立了连接,发送了一些数据,然后手机要么停止发送,要么服务器停止接收。是什么原因导致这种情况?
编辑:示例数据链接http://pastebin.com/BS9HjKhg 编辑2:服务器或iOS将图像中的“+”转换为空格。我会在找到正确发送方法后发布答案。
NSString *dataStr = [NSString stringWithFormat:@"request_data=%@",reqStr];
NSLog(@"datastr is %@",dataStr);
NSData *dataForUrl = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"nsdata length is: %i",[dataForUrl length]);
[urlRequest setHTTPBody:dataForUrl];
[urlRequest setValue:[NSString stringWithFormat:@"%d", [dataForUrl length]] forHTTPHeaderField:@"Content-Length"];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *res, NSData *data, NSError *err) {
// ...
}
第一个日志语句显示了正确的数据。我甚至把字符串的base64部分拿到http://www.motobit.com/util/base64-decoder-encoder.asp解码成为jpg,这是正确的图像。第二个日志语句表明长度是正确的(例如,当图片大小为422480时,长度为422624)。
我找不到连接细节或数据有任何问题。手机建立了连接,发送了一些数据,然后手机要么停止发送,要么服务器停止接收。是什么原因导致这种情况?
编辑:示例数据链接http://pastebin.com/BS9HjKhg 编辑2:服务器或iOS将图像中的“+”转换为空格。我会在找到正确发送方法后发布答案。