【发布时间】:2020-04-26 05:06:12
【问题描述】:
在我的应用中,我只想在可以访问互联网的情况下进行网络呼叫。
注意:我连接到没有互联网的 WiFi 点
我想测试互联网是否可用。我尝试使用如here 所述的可达性,并且我还尝试了如here 所述的更简单的解决方案
问题在于,Reachability 是它返回 Internet 是可访问的,而实际上它不是。另一种解决方案需要太多时间才能给出响应。我尝试为请求和会话设置超时间隔,但它被忽略了。
如果我连接到没有互联网的 wifi,如何测试互联网可访问性?
这是我使用的一些代码:
- (void) postAsyncTaskWithUrl:(NSString*)urlString
andType:(NSString*)requestType
andToken:(NSString*)token
andPropertiesObject:(id)propObject
urlEncoded:(BOOL)isUrlEncoded
withSuccess:(nullable void(^)(id _Nullable))success
andFailure:(nullable void(^)(id _Nullable))failure
{
internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];
__weak typeof(self) weakSelf = self;
// Internet is reachable
internetReachableFoo.reachableBlock = ^(Reachability*reach)
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlSt];
[request setTimeoutInterval:20]; //Ignored ... WHY?
NSURLSessionConfiguration *sessionConfigurations = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfigurations setTimeoutIntervalForRequest:20]; //Ignored ... WHY?
[sessionConfigurations setTimeoutIntervalForResource:20]; //Ignored ... WHY?
// NSURLSession *session = [NSURLSession sharedSession];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfigurations];
[[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
}
}
}
【问题讨论】:
标签: ios nsurlsession nsurlrequest reachability nsurlsessionconfiguration