Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Objective c 当我使用基于webview的应用程序并且服务器在iphone sdk中出现故障时,如何查找404错误原因_Objective C_Uiwebview - Fatal编程技术网

Objective c 当我使用基于webview的应用程序并且服务器在iphone sdk中出现故障时,如何查找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];

我正在实现一个基于webview的应用程序,因为我需要在404错误发生时找到一种方法

任何人的帮助都将不胜感激

感谢大家,,
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响应状态代码。看见