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开发:为什么我总是在第一次尝试中得到“连接失败发生”,但下一个成功?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)