【问题标题】:Get the http response code from every UIWebView request从每个 UIWebView 请求中获取 http 响应代码
【发布时间】:2014-05-01 16:22:32
【问题描述】:

我需要在加载 webview fo 中的任何 url 时检查响应状态代码。现在我们可以考虑我在 Web 视图中加载的任何 Web 应用程序。所以我需要使用该 Web 视图跟踪每个请求并相应地检查响应代码。为了找到响应代码,我需要在 uiwebview 的委托方法“shouldStartLoadWithrequest”中使用 NSUrlConnection。像这样的东西 -

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
        navigationType:(UIWebViewNavigationType)navigationType{
      NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
      if (conn == nil) {
         NSLog(@"cannot create connection");
      }
      return YES;
}

和 NSURLConnectionDelegate 一样 --

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    NSLog(@"connection:didReceiveResponse");
    [self log:@"received response."];
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
    int status = [httpResponse statusCode];
     NSLog(@"http status code: %d", status);
    if (status == 200) {
      NSLog(@"Response OK");
    }
    else {
       NSLog(@"Response is not OK");
    }
}

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
   NSLog(@"connection:didReceiveData");
}

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    NSLog(@"connection:didFailWithError - %@", error);
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection{
   NSLog(@"connectionDidFinishLoading");
}

但是在这个过程中,服务器上有2个调用。一个用于 UIWebview,另一个用于 NSUrlConnection。我只需要对服务器进行一次调用,就可以在其中找到状态代码。有人可以指导我吗?

【问题讨论】:

  • 我认为 shouldStartLoadWithRequest 方法中甚至不会有响应,因为它还没有开始。不能只用 webViewDidFinishLoad 方法吗?
  • 我面临同样的问题。我已经阅读了大量的 stackoverflow 回复,但我从 Ray 那里得到了教程,这应该只需要一个电话就可以做到……raywenderlich.com/59982/nsurlprotocol-tutorial
  • @Skodik.o :是的,我已经使用 NSURLProtocol 实现了它。它解决了问题。

标签: ios iphone uiwebview uiwebviewdelegate nsurlconnectiondelegate


【解决方案1】:

我已经使用

实现了它

NSURL 协议

。更多详情,您可以在这里查看 - NSURLProtocol

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2020-10-17
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多