我在ObjectiveC中编程。我想所有oC程序员都使用相当标准的代码发布:
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
目前我收到警告,NSUInteger不应该用作格式参数。 警告提示类型转换(unsigned long)。并且还用%lu替换%d。这听起来很合理。
在HTTP定义中,我找不到Content-Length实际可能有多长。只是相当模糊的八重奏。那是8位吗?我找不到答案!
答案 0 :(得分:4)
Content-Length的最大值没有特定限制。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
14.13 Content-Length
Any Content-Length greater than or equal to zero is a valid value.
此setValue:forHTTPHeaderField:
类引用中的NSMutableURLRequest
的Apple文档说明了
此外,如果可以确定上传正文数据的长度 自动(例如,如果您提供身体内容 NSData对象),然后为您设置Content-Length的值。
答案 1 :(得分:-2)
这个rfc很糟糕,因为它说内容长度必须是“十进制数”,但它也表示它是一个八位字节(因此它不能是十进制数)。
这取决于您的实施。 例如,在Java中,max content-length是Integer.MAX_VALUE但是,您可以通过直接读取标头来绕过它(HTTP标头是字符串)。
那里没有真正的HTTP限制。