我们使用PHP服务器和iOS应用程序。
我使用NSURLConnection
向服务器发送消息。如果服务器不可用,例如地址不正确,然后我们等待60-90秒后的错误。这是很长一段时间。
如何减少这段时间?是否有任何快速功能来检查服务器可用性?
如果我先打电话
[request setTimeoutInterval:10];
[request setHTTPBody:[message data]];
当我检查[request timeoutInterval]时,它仍然是240,而不是10.很有趣..
如果在创建连接之前添加setTimeoutInterval:
调用,请执行以下操作:
[request setTimeoutInterval:10];
connection = [[NSURLConnection alloc] initWithRequest: request delegate: self];
请求在很长一段时间后仍然会返回。
答案 0 :(得分:1)
答案 1 :(得分:1)
是的,超时并不像你期望的那样有效。一种解决方案是设置一个计时器,在您所需的间隔过去后取消连接。我在我的ReallyRandom课程中这样做了,似乎可以解决这个问题。
它看起来像这样:
connection = [[NSURLConnection alloc] initWithRequest: request delegate: self startImmediately:NO];
timer = [NSTimer scheduledTimerWithTimeInterval:10
target:self
selector:@selector(onTimeExpired)
userInfo:nil
repeats:NO];
[connection start];
// When time expires, cancel the connection
-(void)onTimeExpired
{
[self.connection cancel];
}
答案 2 :(得分:0)
您可以减少请求中的超时时间,并在方法中指定timeoutInterval
参数:
+ (id)requestWithURL:(NSURL *)theURL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval
但是很难判断服务器是不可用还是只是忙碌。您可以确定如果服务器在某个时间间隔内没有响应,则可能是它已关闭。否则你将不得不等待。
答案 3 :(得分:0)
此代表
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
if (error.code == NSURLErrorTimedOut)