当前位置: 首页 > 面试题库 >

在UIWebView上获取HTTP响应标头

谭凯
2023-03-14
问题内容

如何从WebView获得HTTP标头响应?我找到了半解决方案,但是它是用Objective-
C编写的,不能将其转换为Swift(我已经尝试过使用较差的Obj-C知识了)。

Objective-C代码:

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        NSCachedURLResponse *resp = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request];
        NSLog(@"%@",[(NSHTTPURLResponse*)resp.response allHeaderFields]);
    }
  1. 该代码将如何看待Swift?
  2. 也许现在我们有更好的方法呢?并不总是启用缓存。

问题答案:

迅速

斯威夫特更严格; 您想保护自己免受nil指针和optionals

  • 检查webView实际是否有request
  • 检查request实际是否有NSCachedURLResponse
  • 对响应进行类型检查 NSHTTPURLResponse
    func webViewDidFinishLoad(webView: UIWebView) {
        if let request = webView.request {
            if let resp = NSURLCache.sharedURLCache().cachedResponseForRequest(request) {
                if let response = resp.response as? NSHTTPURLResponse {
                    print(response.allHeaderFields)
                }
            }
        }
    }


 类似资料:
  • 问题内容: 有什么方法可以获取原始响应的HTTP标头? 该方法对我不起作用,因为服务器吐出了多个“ Set-Cookie”,其中一些丢失了。 问题答案: 该方法对我不起作用 您是在的情况下问这个的吗?不可以,无法使用原始HTTP响应标头。您需要退回到低级的Socket编程。这是一个SSCCE,只需复制“ 粘贴 ”即可运行它。 为了避免每个尝试此代码片段的人都使SO过载,输出如下所示: 要了解有关以

  • 问题内容: 好的,因此我可以使用访问HTTP ajax响应标头 但似乎没有日期,尽管它在那里: 而代码只显示了这一点: 这是ajax调用: 有没有办法可以在响应头中获取日期? 问题答案: 这有帮助:

  • 您只能使用HTTP HEAD请求报头,如中的选项。 冗长的HTML响应体在命令行中很难得到,所以我希望只得到标题作为POST请求的反馈。但是,头和岗是两种不同的方法。 如何使curl只显示POST请求的响应头?

  • 问题内容: 我想从Http get响应中获取一个对象: 这是我当前对Http get的代码: 这是convertSteamToString函数: 现在,我只是得到一个字符串对象。我如何找回JSON对象。 问题答案: 您获得的字符串只是JSON Object.toString()。这意味着您将获取JSON对象,但使用String格式。 如果应该获取JSON对象,则可以输入:

  • 我想从Http get响应中获取一个对象: 这是我当前的Http get代码: 这是转换的SteamToString函数: 现在我只是得到一个字符串对象。如何取回JSON对象。

  • 我想使用响应头来确定是否获得响应正文,场景如下,我需要确定响应头中的会话是否过期,以确定是否继续下载文件。如果会话过期,只需取消下载。 我看了看OKHTTP的拦截器,觉得它不符合我的要求。