Objective c 当我使用基于webview的应用程序并且服务器在iphone sdk中出现故障时,如何查找404错误原因
我正在实现一个基于webview的应用程序,因为我需要在404错误发生时找到一种方法 任何人的帮助都将不胜感激 感谢大家,,Objective c 当我使用基于webview的应用程序并且服务器在iphone sdk中出现故障时,如何查找404错误原因,objective-c,uiwebview,Objective C,Uiwebview,我正在实现一个基于webview的应用程序,因为我需要在404错误发生时找到一种方法 任何人的帮助都将不胜感激 感谢大家,, Monish.在这里,您只需要在webview委托方法中检查请求完成或失败时的状态` - (void)webViewDidFinishLoad:(UIWebView *)webView { int status = [[[webView request] valueForHTTPHeaderField:@"Status"] intValue];
Monish.在这里,您只需要在webview委托方法中检查请求完成或失败时的状态`
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
int status = [[[webView request] valueForHTTPHeaderField:@"Status"] intValue];
if (status == 404) {
}
}
如果这对你没有帮助。看看这个。
使用要加载的URL创建NSURLRequest。然后使用NSURLConnection进行连接
NSURLConnection有一个委托方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
这将给出服务器的响应。请注意,如果您是通过HTTP进行连接,那么响应实际上将属于NSHTTPURLResponse类。NSHTTPURLResponse可用于使用以下实例方法获取状态
- (NSInteger)statusCode
然后检查状态是否为404,如果是,则显示警报视图。通过这种方式,您将能够同时显示html页面和警报视图。试试看,我认为如果URL错误,则返回的html为零。你只能在那里处理
NSString *htmlCode = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:loadUrl]];
if (htmlCode==nil)
{
// you can handle here with an alert or any message in webview to load.
}
else
{
[myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadUrl]]];
}
[htmlCode release];
您可以在其他方法中使用htmlCode,如
- (void)webViewDidFinishLoad:(UIWebView *)webView
如果您希望在请求后处理它。在
webViewDidFinishLoad
方法中,您也可以通过以下方式进行检查:
NSCachedURLResponse *resp = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request];
NSLog(@"status code: %ld", (long)[(NSHTTPURLResponse*)resp.response statusCode]);
webViewDidFinishLoad()
方法写入以下代码并检查状态代码
- (void)webViewDidFinishLoad:(UIWebView *)webview {
NSCachedURLResponse *urlResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:webview.request];
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) urlResponse.response;
NSInteger statusCode = httpResponse.statusCode;
}
@Shruthi:但是当服务器失败时,webViewDidFinishLoad方法没有调用。然后在webView的didFailLoadWithError委托方法中尝试此操作。@Shruthi:很抱歉,webViewDidFinishLoad调用了此方法,但我得到的状态是0而不是404。首先,它的shruti不是Shruthi,其次,如果您得到的状态是0,则它不是Shruthi404您正在搜索的错误。如果是404错误,那么在浏览器中显示url时,页面应该显示类似“显示页面时出现404错误”的内容。在您的例子中,您可以检查状态==0,然后在if部分中执行您想要执行的任何操作。希望这对您有效。这种方法不起作用。无法从您需要的webView访问HTTP响应状态代码。看见