我有一个需要来自网络服务器的数据的应用。我在不同国家/地区设有服务器,以确保快速响应本地请求。在应用程序的开头我想决定我应该使用哪个服务器,所以我的计划是向不同的服务器发送请求并首先检查哪些响应。
我在每台服务器上都有check.php
并返回" ok"作为响应,我能够在不同的线程中调用它,但我不知道如何将serverURL
设置为第一个响应的服务器。有人可以帮忙吗?或者有更好的方法来实现我想要的目标吗?
NSURL *url = [NSURL URLWithString:@"http://server_de/check.php"];
NSError *e = nil;
NSString* result = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&e];
if (result == nil || ![result isEqualToString:@"ok"]) {
serverURL=ServerDE;
}
编辑:所有服务器都会响应,但世界另一端的服务器会响应。我需要设置最快的服务器,而不是最慢的服务器。
答案 0 :(得分:0)
假设您发送了一些请求,并且每个请求在完成后都会覆盖您的serverURL
值,这就是您最终获得最新请求的原因。为避免这种情况,您可以将serverURL
作为属性或全局变量,然后在分配之前检查serverURL
是否已经有值,如果有,则不要更新它。
if ((result == nil || ![result isEqualToString:@"ok"]) && serverURL != nil) {
serverURL = aServer;
}
实际上,只要您收到第一个回复,就可以取消其他请求,因为您不再需要他们的答案了。