【发布时间】:2011-05-25 21:24:12
【问题描述】:
我有一个非常烦人的问题,我正在努力解决。我有一个将多种形式的数据发送到服务器的 iPhone 应用程序。服务器端使用 PHP 处理数据并做出响应。对于小长度的数据,这很好,但是其中一个请求非常大,而且进展不顺利。请求似乎编码良好,长度适当,甚至设置了 Content-Length 标头。我仍然在 PHP 中得到一个不完整的(字面意思是截断的)结果。
这里有一些代码:
NSString *requestString = [NSString stringWithFormat:@"json=%@", [params JSONFragment], nil];
NSLog(@"%@", requestString);
NSLog(@"%u", [requestString length]);
NSData *requestData = [requestString dataUsingEncoding:NSUTF8StringEncoding];
//NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: strlen([requestString UTF8String])]; //[requestString UTF8String]
//NSData *requestData = [NSData dataWithBytes: requestString length: [requestString length]]; //[requestString UTF8String]
//NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"https://radarromance.com/api/index.php"]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: requestData];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setValue:[NSString stringWithFormat:@"%u", [requestString length], nil] forHTTPHeaderField:@"content-length"];
将实际数据视为格式正确的 JSON 字符串,长度大于 4000 个字符。我运行了一个小测试来查看 NSData 对象的长度是否正确,并且确实如此。在 iPhone 方面,我认为一切都很好。
然而,PHP 端只显示了请求的一部分,因此它是不完整的。 post_max_size是16M,应该够用了。
这怎么可能?什么可能是错的?非常感谢这里的任何帮助!
亲切的问候,
雷德
【问题讨论】:
-
您是否尝试过发送不带 content-length 标头的请求?
-
是的,没用! @Rizwan 更改内容类型也是如此。 @Bitterzoet 我检查了,响应几乎是即时的,超时设置为一个小时......我没有忽略 PHP 设置或怪癖吗?
标签: php objective-c nsurlrequest