【问题标题】:Pass cookie to browser via Intent通过 Intent 将 cookie 传递给浏览器
【发布时间】:2013-06-27 23:13:17
【问题描述】:

我在 android 中保存了一个 cookie。现在我想将它传递给我的浏览器意图。看看我现在的代码:

Intent browser = new Intent("android.intent.action.VIEW",
                            Uri.parse("http://mypage.php/memberpagethatrequireacookie.php"));
//putExtra cannot take these arguments -> browser.putExtra("org.apache.http.cookie.Cookie", cookie);
startActivity(browser);

我希望它暂时存储在我的浏览器中,以便我的会员页面成功加载。 我的 cookie 是从 HTTP 请求成功创建的,我将其分配给 List<Cookie> cookie; 告诉我是否应该提供更多代码。

有什么想法吗?提前致谢!

【问题讨论】:

    标签: java android


    【解决方案1】:

    浏览器没有记录在案的 Intent 附加功能,更不用说允许您注入 cookie 的功能了。当然,用户可能正在使用不同的浏览器。

    欢迎您在您的应用程序中使用WebView,您可以使用CookieManager 将您的cookie 注入WebView 的环境中。

    【讨论】:

    • 所以用普通的浏览器是不可能做到的吧?然后,WebView 选项就是要走的路。
    • @Julian Assange:我不知道使用“常用浏览器”是可能的。一些设备将取代该浏览器。一些用户将替换该浏览器。他们都同意通过Intent extras 接受 cookie 的无证协议的可能性相当低。
    • 好的,谢谢。出现了另一个问题,但我将在另一个问题中提出。这是关于 Cookie 注入本身的问题。
    【解决方案2】:

    这里是使用 android.proveder.Browser 的答案:

    我有一个 Map 对象,我存储了我想要传递的标题信息。然后是:

    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    Bundle bundle = new Bundle();
    if(mExtraHeader!=null){
     for(String key: mExtraHeader.keySet()){
      bundle.putString(key, mExtraHeader.get(key));
     }
    }
    i.putExtra(Browser.EXTRA_HEADERS, bundle);
    startActivity(i);
    

    就像其他人提到的那样,这仅适用于默认浏览器,而其他浏览器不会有 Browser.EXTRA_HEADERS 我想。资源:http://gitorious.org/rowboat/packages-apps-browser/blobs/a563d09392905140893d7a017dd63721577e1953/src/com/android/browser/BrowserActivity.java

    【讨论】:

      【解决方案3】:

      上面的代码可以很好地设置标题(感谢它),但我无法以这种方式设置 cookie。我怀疑的是,如果网络浏览器已经为目标 URL 存储了 cookie,它将覆盖使用 EXTRA_HEADERS 创建的 cookie。

      【讨论】:

      • "Set-Cookie" 是一个 HTTP 应答标头。我们这里讨论的是 HTTP 请求“Cookie”标头。
      • 然后是“Cookie”标头...en.wikipedia.org/wiki/List_of_HTTP_header_fields
      • 这确实证实了我所说的关于“请求”和“响应”HTTP 标头的内容。可以在请求中发送“Cookie”HTTP 标头。可以在响应中接收“Set-Cookie”标头。由于这个问题与通过手动设置 cookie 发送请求有关,因此我们谈论的是“Cookie”标头,而不是“Set-Cookie”标头,这在请求中没有意义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      相关资源
      最近更新 更多