Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIWebView从加载的页面获取http状态代码_Ios_Uiwebview_Nsurlrequest - Fatal编程技术网

Ios UIWebView从加载的页面获取http状态代码

Ios UIWebView从加载的页面获取http状态代码,ios,uiwebview,nsurlrequest,Ios,Uiwebview,Nsurlrequest,我在游戏中使用UIWebView来显示客户支持表单。我注意到,如果服务器返回503错误(从负载平衡器发送的http状态代码),我就无法关闭webview 有没有办法轻松获取此http状态?我是否可以进行一些设置,以便在http状态代码不是200时调用didFailWithError 加载代码 UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame]; NSURL *nsURL = [NSURL URLWithS

我在游戏中使用
UIWebView
来显示客户支持表单。我注意到,如果服务器返回503错误(从负载平衡器发送的http状态代码),我就无法关闭webview

有没有办法轻松获取此http状态?我是否可以进行一些设置,以便在http状态代码不是200时调用
didFailWithError

加载代码

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];

NSURL *nsURL = [NSURL URLWithString:url];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsURL];

webView.opaque = YES;

webView.userInteractionEnabled = YES;

[webView loadRequest:request];

webView.delegate = self;

closableWebViewController = [[UIViewController alloc] init];

[closableWebViewController.view setFrame:self.view.frame];

[closableWebViewController.view addSubview:webView];

[self presentViewController:closableWebViewController animated:YES completion:nil];
未调用此委托方法

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
 NSLog(@"webview error %@",error);

 if (closableWebViewController)
 {
    NSLog(@"closing webview");
    [closableWebViewController dismissViewControllerAnimated:TRUE completion:^{
        closableWebViewController = nil;
        NSLog(@"webView closed");
    }];

 }
}

你不容易做到这一点,但这里有一个很好的技巧:


是的,我查看了此页面,但在我的情况下,如果能找到一种方法让didFailWithError代表打电话,那就太好了。我可以要求我的系统管理员更改负载平衡器发送错误的方式。也许如果我从错误页面中删除所有html输出,它会解决问题。是的,这会解决问题。另一个选项是在成功时使用NSUrlConnection并手动填充UIView。我最后使用了另一个技巧(通过javascript获取html内容),但ios SDK中显然缺少此信息。当服务器停机时,负载平衡器返回特定的html内容,我们在返回的html中查找该内容:-(void)webViewDidFinishLoad:(UIWebView*)webView{NSString*html=[webView StringByEvaluationJavaScriptFromString:@“document.body.innerHTML”];if([html IsequalString:@”“]| |[html containssString:@“Unavailable”]))//做点什么啊!现在我明白了!是的,这很有效。当你可以访问服务器时很好:)