我的情况是这样的:
- 我有一个
UIWebView
向用户提供主机名的 URL 发出 POST 请求。 - 当主机名不存在时,我需要超时,以便我可以提醒用户说他们应该检查他们的设置。
怎么了:
我提出这样的要求:
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:
- (测试时总是返回真)
webViewDidStartLoad
就是这样 - 在那之后什么都没有。
我很惊讶webViewDidStartLoad
被调用,因为这表明它找到了 URL 并认为它可以从中获取数据。但它不能,因为 URL 不存在!
我在这里做错了吗?
我有一个我要实现的解决方法,它使用一个NSTimer
来查看是否在超时期限内收到了响应。但是,我在取消请求时遇到问题UIWebView
- 但这是我下一个 SO 问题的主题!
所以我的问题:
webViewDidStartLoad
在无效的 URL 上调用是否正确?- 我是否应该通过设置请求的方式看到返回的请求超时错误?
提前致谢!!
拉紧 :)