2011-05-02 57 views
2

你好 我使用ASIHTTPRequest发送一些值给服务器。所有工作正常,直到昨天requestFinished没有工作。 (当应用程序在服务器上发送活动指示器和添加到主视图的新视图以及请求完成时删除视图时)。我加requestFailed测试,如果失败,我得到这个错误:ASIHTTPRequest超时

[3438:207]错误域= ASIHTTPRequestErrorDomain代码= 2“请求超时”的UserInfo = 0x5ad25c0

它的奇怪,因为相同的代码是昨天工作正常。我相信他们没有在服务器端进行任何修改。

这是代码:

- (IBAction)convert:(id)sender{ 

//Get the email from the textfield 
NSString *email1 = email.text; 

//Save the last used email to load it on the next app launch 
[[NSUserDefaults standardUserDefaults] setValue:email1 forKey:@"email"]; 

//Get the current URL from webview 
NSString *currentURL= webView.request.URL.relativeString; 

lbl.text = currentURL; 

//Count the length of Label 
int strL= [lbl.text length]; 

//The url that the requests will be send. 
NSURL *url = [NSURL URLWithString:@"the website"]; 

//Indicator and its view are loading on the screen 
[ind startAnimating]; 
[self.view addSubview:indView]; 


//ASIHTTPRequests 

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

NSString *watch = [lbl.text substringWithRange:NSMakeRange(23,strL-23)]; 
NSString *link = [NSString stringWithFormat:@"http://youtube.com/%@",watch]; 

[request setShouldRedirect:YES]; 
[request setPostValue:watch forKey:@"url"]; 
[request setPostValue:email1 forKey:@"email"]; 
[request setPostValue:format forKey:@"format"]; 
[request setPostValue:quality forKey:@"quality"]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

NSLog(@"%@ %@ %@ %@",watch,email1,format,quality); 

click=NO; 

} ,这是requestFinished:

- (void)requestFinished:(ASIFormDataRequest *)request{ 
NSString *responseString = [request responseString]; 
NSLog(@"%@",responseString); 
NSLog(@"%@",lbl.text); 
NSLog(@"requested finished"); 
[ind stopAnimating]; 
[indView removeFromSuperview]; 
[setView removeFromSuperview]; 

}

+0

URL在浏览器中弹出时是否显示页面? – 2011-05-02 23:45:44

+0

Yeap。我正在向sevrer发送关于youtube链接的详细信息,然后服务器将它们发送到其他服务器上。直到昨天,请求才算正确,因为我得到了服务器的响应。今天服务器遵循重定向,并在2-3分钟后回复其他服务器(取决于YouTube视频的大小)。我意识到,当我使用小视频的YouTube链接并在超时之前从第二台服务器获得回复时。我尝试设置shouldRedirect:NO,但没有。奇怪的是,昨天一切正常 – user622203 2011-05-03 10:52:08

回答

6

你尝试增加对请求的超时值?默认情况下,它是10秒,您可以通过在启动异步调用之前进行调整以使其更大:

[request setTimeOutSeconds:60]; 
+0

这对我工作,谢谢!同样的问题,正在工作的代码刚刚开始失败。我知道在网络延迟或类似情况下暴露的代码中肯定存在一些弱点,看起来就是这个问题。 – 2011-12-27 12:31:33

+0

不适合我,我设置了超时200秒,超过75秒后超时......任何想法? – AsifHabib 2013-10-11 06:13:12

+0

在这一点上,我建议切换到AFNetworking,因为该项目仍在积极开发中。将事情转换过来是一项工作,但对我而言,在我的应用程序中使用网络非常值得。 – 2013-10-12 17:54:46