0

我正在使用 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 属性。

有任何想法吗?

4

1 回答 1

1

When you specify an encoding, the size of the contents can change... get the size after you set the HTTPBody and then see if that adjusts things up by four bytes automatically.

于 2012-03-26T18:29:08.993 回答