【问题标题】:NSMutableURLRequest incomplete length in PHPPHP中的NSMutableURLRequest长度不完整
【发布时间】: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


【解决方案1】:

我在使用其他 http 客户端抓取网站时也遇到过这个问题,但也许解决方案是相同的。我有不完整的请求,因为我的超时设置为低并且下载(或在您的情况下发布)需要很长时间,因此会导致我的请求不完整。可能是值得检查的东西!

【讨论】:

  • 我从来没有真正解决它,但你的回答让我想到了其他的可能性。如果请求/响应真的太重,把它切成小块可能会很聪明;-)。
【解决方案2】:
@"application/x-www-form-urlencoded"

尝试应用程序/json

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多