【问题标题】:How to send a referer request in a url for a webView如何在 webView 的 url 中发送引用请求
【发布时间】:2011-07-17 13:50:43
【问题描述】:

我需要在我的 Android 应用程序中显示一个网页,该网页正在寻找一个绕过安全性的引荐来源网址。我是 Android 新手,所以我知道如何在 Web 视图中显示网页,但不知道如何将“引荐来源”与 url 请求一起发送。我确定它需要更新 HTTPHeaderField 但我在 Android 中找不到任何参考。下面的代码是我用来调出网页的代码,但没有“referer”,它会显示“Access Denied”

WebView webview = new WebView(this);
setContentView(webview);
webview.loadUrl("http://www.mywebsite.com");

我认为答案可能在于添加额外标题的 WebView.LoadURL 方法,但我找不到任何示例。

【问题讨论】:

    标签: android httpwebrequest http-headers


    【解决方案1】:

    对于哪个 API 级别您需要该功能?

    从 API 级别 8 开始,有第二个 loadUrl 函数:

      public void loadUrl (String url, Map<String, String> extraHeaders)
    

    使用extraHeaders,您应该能够发送推荐人。


    编辑:

    这是一个完整的工作示例:

      String url = "http://www.targetserver.tld/";
    
      Map<String, String> extraHeaders = new HashMap<String, String>();
      extraHeaders.put("Referer", "http://www.referer.tld/login.html");
    
      WebView wv;
      wv = (WebView) findViewById(R.id.webview);
      wv.loadUrl(url, extraHeaders);
    

    【讨论】:

    • 感谢您的回复,我确实在 Android 参考中注意到了这一点,但希望能找到一个示例。我的推荐人是“myblog201.com/”
    • 感谢您的示例,我复制了代码进行尝试,但出现以下错误“WebView 类型中的方法 loadUrl(String) 不适用于参数 (String, Map)' 它提示我删除额外的参数。我做错了吗?
    • 您使用的是什么 API 级别?正如我所写,具有第二个参数的新 loadUrl 函数自 API 级别 8 以来就存在。
    • 我确实注意到并检查了我的 AndroidManifest.xml,设置现在是 但最初是 7 虽然似乎没有改变它任何区别,因为它仍在标记错误。
    • 抱歉,刚刚进入 Project>Properties>Android>Project Build Traget 并将 API 级别更改为 8,这样就成功了。
    【解决方案2】:

    您将需要使用 Intent 过滤器来捕获和修改 WebView 请求。

    假设您需要指定 doamin.com/page.html 作为referrer

    1. 设置意图过滤器以捕获 WebView 中的所有 http 请求
    2. 如果请求是针对“doamin.com/page.html”的,则返回具有刷新标签的预定义页面以将用户发送到“http://www.mywebsite.com”
    3. domain.com/page.html 将作为引荐来源网址发送到 mywebsite.com

    在较新的 API 中,您可以在 loadUrl 本身中指定标头。

    【讨论】:

    • 你能发一个例子吗?
    猜你喜欢
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    相关资源
    最近更新 更多