我正在使用ASIFormDataRequest将多部分POST数据发送到运行nginx + php-fpm的服务器。

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:sessionKey forKey:@"session"];
[request setPostValue:secret forKey:@"secret"];
[request setPostValue:@"test" forKey:@"description"];
[request setFile:filePath forKey:@"image"];
[request setTimeOutSeconds:120];
[request setDelegate:self];
[request startAsynchronous];

但是,不时地(非常随机地发生,很难重现)一个空请求到达服务器,我在所有测试中都使用相同的文件。 ASIHTTPRequest符合requestFinished,一切正常。

我检查了日志,没有生成服务器端错误。

有人遇到过这个问题吗?

最佳答案

我今天过早有这个问题。它与nginx行为有关如何重用连接有关。一个简单的解决方法是将以下内容添加到您的请求过程中:

[request setShouldAttemptPersistentConnection:NO];

在最新版本的ASIHTTPRequest中,此选项还默认情况下设置为NO。在Github上了解更多有关它的信息:

Stop using persisted connections on POST/PUT

09-25 21:35