我正在实现一个具有UIWebView的应用程序。我的问题是我需要显示一个警告,当它无法加载网址与网址。它对1001和1009类型的错误工作正常,但对404错误没有响应。我无法解决这个问题。你们能帮忙解决这些类型的错误吗?UIWebView didFailWithError没有响应404错误
感谢, S.
我正在实现一个具有UIWebView的应用程序。我的问题是我需要显示一个警告,当它无法加载网址与网址。它对1001和1009类型的错误工作正常,但对404错误没有响应。我无法解决这个问题。你们能帮忙解决这些类型的错误吗?UIWebView didFailWithError没有响应404错误
感谢, S.
一些Web服务器将返回一个网页的404错误,它加载正确,因此web视图没有加载失败。
这可能是您看到此行为的原因。
没有简单的方法来获得在webview的URLConnection为了响应状态码回调。
如果您确实需要在遇到404错误时显示警报,而不是让Web服务器显示它自己的404页面,那么您可以自己为要加载的URL创建NSURLConnection和NSURLRequest。
如果成功,您可以下载HTML并手动将其放入web视图。这将使您可以控制URLConnection委托,并让您响应404响应代码。
#pragma mark -
#pragma mark - UIWebView Delegate Methods
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
static BOOL isRequestWeb = YES;
if (isRequestWeb) {
NSHTTPURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
if (response.statusCode == 404) {
// code for 404
return NO;
} else if (response.statusCode == 403) {
// code for 403
return NO;
}
[webView loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:[request URL]];
isRequestWeb = NO;
return NO;
}
return YES;
}
感谢reqply, – sekhar 2010-11-11 10:01:51
但是,如果我们使用NSURLConnection的了解响应代码,那么我们就需要调用服务器的两倍,而不是一个。一种是将请求加载到webview中,另一种是创建NSURLConnection。是否可以处理这两个而不是一个?如果我想错了,请建议我 – sekhar 2010-11-11 10:04:11
创建一次NSURLConnection并调用它 - 如果成功,它将返回您请求的页面的HTML - 您可以使用'loadHTML:baseURL:'手动加载到UIWebView中。你不需要提出两个请求。如果请求不成功,您可以检查响应代码以查看原因。 – Jasarien 2010-11-11 14:53:06