我正在使用 NSMutableURLRequest 执行从 iOS5 到自定义服务器的简单文件上传。当我发送请求时,我让它打印出 bodyContents 的长度,其中包含请求的正文。对于我正在处理的特定请求,它会说长度是 46784。我没有设置内容长度,因为我发现它是自动执行的,但无论如何我都会提取信息以防我以后需要它. 服务器收到的标头说内容长度是46784。当我在服务器端对正文进行字符计数时,它告诉我正文的长度是46788,4太多了。我再次运行了另一个请求,请求的字符比我发送的多 4 个字符。
起初,我认为它必须在服务器端,只是因为它没有任何意义。因此,我从一个我知道可以工作的测试程序向服务器发送了一个请求,并检查了它发送的正文长度与 content-length 标头的长度,它们是相同的。
处理这个问题的最佳方法是什么?我应该手动将内容长度设置为4+[bodyContents length]
吗?我认为这不是我想做的,只是因为我不应该为我不知道我想要的数据添加额外的空间。
这是发送请求的代码
-(void)send:(id)delegate
{
bodyContents = [bodyContents stringByAppendingFormat:@"--%@--",boundry];
NSInteger length = [bodyContents length];
NSLog(@"Length is %i",length);
[request setHTTPBody:[bodyContents dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:delegate];
if(connection)
{
NSLog(@"Connection good");
}
else
{
NSLog(@"Connection bad");
}
}
我在类的 init 方法中设置了请求的 content-type 属性。
有任何想法吗?