Joa*_*rom 19 cookies post android http
我HttpResponse在检查用户名或密码是否正确时从服务器获取.当我加载url一个webview我想要webView有cookie(我得到的答案postData()存储在webView.我希望webView获取cookie并加载存储在webview中的cookie的URL.
我正在收到回应.
public HttpResponse postData() {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://example.com/login.aspx");
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("txtUsername", "user"));
        nameValuePairs.add(new BasicNameValuePair("txtPassword", "123"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        String responseAsText = EntityUtils.toString(response.getEntity());
        Log.v(TAG , "Response from req: " + responseAsText);
        return responseAsText;
    } catch (ClientProtocolException e) {
    } catch (IOException e) {
    }
    return null;
}
我用loadUrl:
webView.loadUrl("http://a_page.com/getpage.aspx?p=home");
我想我不是真正管理一个cookie,我不知道该怎么做.任何建议或解决方案?
Bry*_*eld 11
这真的很简单.
String cookieString = "cookie_name=cookie_value; path=/";
CookieManager.getInstance().setCookie(baseUrl, cookieString);
其cookieString格式与更传统的Set-CookieHTTP标头相同,并且baseUrl是cookie应属于的站点.
gio*_*.nl 10
我从我的经验中发现了一些让我头疼的评论:
http和https网址不同。设置 cookiehttp://www.example.com与设置 cookie 不同https://www.example.comhttps://www.example.com/有效但https://www.example.com不起作用。CookieManager.getInstance().setCookie正在执行异步操作。因此,如果您在设置 url 后立即加载它,则不能保证 cookie 已经被写入。为了防止意外和不稳定的行为,请使用 CookieManager#setCookie(String url, String value, ValueCallback callback) ( link ) 并在调用回调后开始加载 url。我希望我的两分钱可以节省一些人的时间,这样你就不必像我一样面临同样的问题。
小智 5
如果你有很少的带有 cookie 的项目(就像我的例子),你应该将它与一些循环一起使用:
val cookiesList = listOf("key1=someValue1", "key2=someValue2", "key3=someValue3")
cookiesList.forEach { item ->
 CookieManager.getInstance().setCookie("http://someHost.com", item)
}
你不能像这样使用它:
CookieManager.getInstance().setCookie("http://someHost.com", "key1=someValue1;key2=someValue2;key3=someValue3")
您可能想看看我如何设置 webview cookie:
在我的回答中,您可以看到我是如何处理这个问题的:
val cookieManager = CookieManager.getInstance()
cookieManager.acceptCookie()
cookieManager.setCookie(domain,"$cookieKey=$cookieValue")
cookieManager.setAcceptThirdPartyCookies(view.webViewTest,true)
| 归档时间: | 
 | 
| 查看次数: | 73173 次 | 
| 最近记录: |