小编Amy*_*ips的帖子

在Android上使用BasicHttpRequest从webview共享cookie

我发送cookie作为http get的一部分时遇到问题.首先,我进入webview中的登录页面,它给了我一个cookie.我检查过,cookie存储在CookieManager中.然后我使用BasicHttpRequest从同一个域获取特定的URL.我希望我从登录中获得的cookie可以附加到我的头文件中获取,但是在Wireshark中查看它并不存在.我用Google搜索并阅读了很多类似的问题,并确保:

  • 我正在使用CookieSyncManager,所以我希望会话中的cookie会持续存在.我不认为CookieSyncManager是异步的是一个问题,因为我每隔5秒就会点击一次URL,而且永远不会添加cookie.
  • 我怀疑我需要告诉我关于我的cookie商店的http请求,但我用Google搜索的解决方案不能为我编译.看起来我想做一些看起来像context.setAttribute(ClientContext.COOKIE_STORE,this.cookieStore)的东西,但我无法弄清楚如何从CookieManager中获取默认的CookieStore.有些代码似乎调用了cookieManager.getCookieStore()但是在Android上没有为我编译.看看文档,我看不到找到疯狂的CookieStore的方法 - 我错过了一些明显的东西吗?

我在webview中启动登录页面的代码如下所示:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // use cookies to remember a logged in status 
    CookieSyncManager.createInstance(this);
    CookieSyncManager.getInstance().startSync();

    //not sure if I need to do this
    CookieManager cookie_manager = CookieManager.getInstance();
    cookie_manager.setAcceptCookie(true);

    webview = new WebView(this);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new HelloWebViewClient()); // if user clicks on a url we need to steal that click, also steal the back button
    webview.loadUrl("http://"+my_server+"/api/v1/login");
    setContentView(webview);
Run Code Online (Sandbox Code Playgroud)

然后我检查cookie的代码看起来像:

public static boolean CheckAuthorised() {
    CookieSyncManager.getInstance().sync();
    CookieManager cookie_manager = CookieManager.getInstance();

    String cookie_string = cookie_manager.getCookie("http://"+my_server+"/api/v1/login");
    System.out.println("lbp.me …
Run Code Online (Sandbox Code Playgroud)

cookies android httprequest android-webview

10
推荐指数
1
解决办法
4750
查看次数

标签 统计

android ×1

android-webview ×1

cookies ×1

httprequest ×1