iphone – iOS开发:为什么我总是在第一次尝试中得到“连接失败发生”,但下一个成功?

iphone – iOS开发:为什么我总是在第一次尝试中得到“连接失败发生”,但下一个成功?,第1张

概述我在我的iOS应用程序中使用ASIHTTPRequest库来对我的Rails 3 Web应用程序进行RESTful请求。我第一次尝试向我的网络应用程序发出POST请求时看到一个奇怪而有些一致的错误,但是在第二次尝试后POST请求工作正常。确切的错误是… Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occur 我在我的iOS应用程序中使用ASIhttpRequest库来对我的Rails 3 Web应用程序进行RESTful请求。我第一次尝试向我的网络应用程序发出POST请求时看到一个奇怪而有些一致的错误,但是在第二次尝试后POST请求工作正常。确切的错误是…

Error Domain=ASIhttpRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0xb513740 {NSUnderlyingError=0xb5135a0 "The operation Couldn’t be completed. (kcfErrorDomainCFNetwork error -1005.)",NSLocalizedDescription=A connection failure occurred}

这是我的ASIhttpRequest代码进行POST请求…

NSURL *url = [NSURL URLWithString:[Nsstring stringWithFormat:@"http://myrails3app.heroku.com/tournaments/%d/register.Json",tID]];    __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];    [request setRequestMethod:@"POST"];    [request addPostValue:username forKey:@"username"];    [request setCompletionBlock:^    {        NSData *responseData = [request responseData];             NSLog(@"Success!");    }];    // Set the code to be called when the request fails    [request setFailedBlock:^     {         NSError *error = [request error];         NSLog(@"Error: %@",[error localizedDescription]);     }];    // Start the request    [request startAsynchronous];

值得一提的是,当它出错时,它的错误很快就出错了!另外,对于什么值得,我的铁路3应用程序,我做POST请求是托管在Heroku。你的想法?

非常感谢你的智慧!

解决方法 这个问题我很难找出原因。问题在于ASIhttpRequest本身(iOS),而不是rails代码。

要做一个很长的故事,问题是针对ASIhttpRequest发送的每个请求使用持久连接的问题。

虽然这对GET请求有好处,但大多数服务器实现不允许与POST请求一起使用持久连接。

我真的没有时间深入调查服务器端的东西,但我认为问题在于应该发送(不包括)的请求的100-Continue头,它附有身体(因此PUT / POST)。如果你想更深入地了解我在说什么,请参阅规格表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html

因此,ASIhttpRequest使用的持久连接等待发送100个响应,从不发送。所以最终超时了。

一个修复是将persistentConnection设置为NO,您的帖子请求如下所示:

ASIhttpRequest *req                     = [ASIhttpRequest requestWithURL:url];req.shouldAttemptPersistentConnection   = NO;
总结

以上是内存溢出为你收集整理的iphone – iOS开发:为什么我总是在第一次尝试中得到“连接失败发生”,但下一个成功?全部内容,希望文章能够帮你解决iphone – iOS开发:为什么我总是在第一次尝试中得到“连接失败发生”,但下一个成功?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存