【问题标题】:How to intercept redirection from a NSURLRequest without UIWebview如何在没有 UIWebview 的情况下拦截来自 NSURLRequest 的重定向
【发布时间】:2012-06-01 08:30:07
【问题描述】:

我有一个创建 NSURLRequest 的方法。如果我在 UIWebView 中加载此 NSURLRequest,我会使用 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 捕获一些重定向。

如何在不将我的请求加载到 UIWebView 的情况下拦截此重定向? (我一点也不想要)

【问题讨论】:

    标签: objective-c uiwebview nsurlrequest


    【解决方案1】:

    嗯,你必须先告诉我们你是如何加载它的。你在用NSURLConnection吗?然后使用-connection:willSendRequest:redirectResponse: 委托方法。请务必阅读文档以了解何时调用它。它通常被调用只是因为框架在实际与任何东西通信之前调整了您的请求,因此并非每次调用都是重定向。

    【讨论】:

    • 我想避免 NSURLConnection 处理任何重定向并希望在状态码为 302 时读取响应我尝试了很多事情,包括从 connection:willSendRequest:redirectResponse 返回 nil/same request 但在 java apache 客户端中无济于事可以将“http.protocol.handle-redirects”设置为 false 查看 java doc 的链接,这就是我想要在 ios 中执行的操作 hc.apache.org/httpcomponents-client-4.2.x/tutorial/html/…
    【解决方案2】:

    如果我理解你想要捕捉请求而不是在 web 视图中加载它。如果这就是您想要做的,只需让您的方法返回 NO。

               - (BOOL)webView:(UIWebView *)webView 
    shouldStartLoadWithRequest:(NSURLRequest *)request 
                navigationType:(UIWebViewNavigationType)navigationType.
    

    【讨论】:

    • 不,我们的目标是不使用 UIWebView
    • 所以你想在没有 webview 的情况下解释 url 重定向?像 http 请求标头中的重定向一样?
    【解决方案3】:

    您可以继承NSURLCache 以拦截任何 url 请求。

    此示例:http://cocoawithlove.com/2010/09/substituting-local-data-for-remote.html 演示了使用子类加载本地文件来代替远程文件,但您也应该能够使用类似的子类来取消请求或执行您需要的其他操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 2011-09-28
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      相关资源
      最近更新 更多