私の状況はこれです:
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:
- (テストでは常に true を返します)
webViewDidStartLoad
それだけです-その後は何もありません。
が呼び出されたことに驚いていwebViewDidStartLoad
ます。これは、URL が見つかり、そこからデータを取得できると考えていることを示唆しているからです。しかし、URL が存在しないため、できません。
ここで何か間違ったことをしていますか?
NSTimer
を使用して、タイムアウト期間内に応答が受信されたかどうかを確認する回避策を実装する予定です。ただし、リクエストのキャンセルに問題がありますUIWebView
が、それは次のSOの質問のトピックです!
だから私の質問:
webViewDidStartLoad
が無効な URL で呼び出されるのは正しいですか?- リクエストをセットアップした方法で、リクエスト タイムアウト エラーが返されるのを見る必要がありますか?
前もって感謝します!!
ストレッチ:)