NSMutableURLRequest向正文添加额外信息,使Content-Length不正确

时间:2012-03-26 18:18:21

标签: iphone ios ipad http nsmutableurlrequest

我正在使用NSMutableURLRequest执行从iOS5到自定义服务器的简单文件上传。当我发送请求时,我打印出bodyContents的长度,其中包含请求的主体。对于我正在处理的特定请求,它会说长度是46784.我没有设置内容长度,因为我发现它是自动执行的,但是无论如何我都会提取信息,以防我以后需要它。服务器收到的标题说内容长度是46784.当我在服务器端对主体进行字符计数时,它告诉我身体的长度是46788,过多。我又发了一个请求,请求再多了4个字符。

起初,我认为它必须在服务器端,因为它没有任何意义。所以我从一个我认识的测试程序向服务器发送了一个请求,并根据内容长度标题检查了它发送的主体的长度,它们是相同的。

处理此问题的最佳方法是什么?我应该手动将内容长度设置为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属性。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当您指定编码时,内容的大小可以更改...在 之后设置HTTPBody获取 的大小,然后查看是否通过自动四个字节。