我的情况是这样的:
- 我有一个
UIWebView
使POST请求,其中主机名是由用户提供的URL。 - 当主机名不存在,我需要超时,这样我可以提醒用户说,他们应检查自己的设置。
怎么了:
我提出这样的要求:
NSString *theURL = [NSString stringWithFormat:@"https://%@%@", _hostname, LOGIN_PART_URL];
NSString *body = [NSString stringWithFormat:@"Username=%@&Password=%@", _username, _password];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:theURL]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:_timeoutInSecs];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]];
[web loadRequest:request];
当主机名不存在网络上,我没有得到任何超时反应。
我已实施的所有委托方法UIWebViewDelegate
,我得到以下才能叫当我使用一个不存在的主机名:
-
webView: shouldStartLoadWithRequest: navigationType:
- (总是返回true进行测试)
-
webViewDidStartLoad
这就是它 - 毕竟,没有什么。
我很惊讶, webViewDidStartLoad
被调用,因为这将表明,它包含的网址,并认为它可以得到的数据从回来。 但它不能作为URL不存在!
难道我做错了什么吗?
我有一个解决办法,我要去实现,其使用NSTimer
,看是否有响应已超时期限内收到。 但是,我有取消的请求问题UIWebView
-不过这是我的下一个话题SO问题!
所以我的问题:
- 它是正确的
webViewDidStartLoad
上无效的URL被称为? - 我应该看到返回的请求超时错误,与我安装我的请求的方式?
提前致谢!!
拉伸:)