我有一个非常讨厌的问题,我正在努力解决这个问题。我有一个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,这应该足够了。
这怎么可能?什么可能是错的?非常感谢任何帮助!
亲切的问候,
雷因德
答案 0 :(得分:0)
@"application/x-www-form-urlencoded"
尝试使用application / json
答案 1 :(得分:0)
我在使用其他http客户端抓取网站时遇到了这个问题,但也许解决方案是一样的。我的请求不完整,因为我的超时设置为低,并且下载(或在您的情况下发布)花了很长时间,因此会导致我的请求不完整。可能值得一试!