http在Android中将cookie设置为网络视图
在检查用户名或密码是否正确时,我从服务器上得到一个HttpResponse
。
当我在一个webview
中加载url
时,我希望webView
将cookie(通过postData()
得到的答案)存储在webView
中。
我希望webView获取cookie并加载url,其中cookie存储在webView中
我正在得到回复
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;
}
我加载URL时使用:
webView.loadUrl("http://a_page.com/getpage.aspx?p=home");
我想我不是真的在管理饼干,我不知道该怎么做。 有什么建议或解决方案吗
# 1 楼答案
只是想用另一种方式来实现这一点。不是说这是最好的,而是一种方式。您还可以使用JavaScript设置cookies。只需在
WebViewClient
中重写onPageFinished
这种方法有一点:你必须重新加载webView。如果有人知道如何解决这个问题,请发表评论
# 2 楼答案
根据我的经验,我发现了一些让我头疼的评论:
http
和https
URL是不同的。为http://www.example.com
设置cookie与为https://www.example.com
设置cookie不同https://www.example.com/
起作用,但https://www.example.com
不起作用李>CookieManager.getInstance().setCookie
正在执行异步操作。因此,如果在设置url后立即加载url,则不能保证cookie已经被写入。为了防止意外和不稳定的行为,请使用CookieManager#setCookie(字符串url、字符串值、ValueCallback callback)(link),并在调用回调后开始加载url李>我希望我的两分钱能节省一些人的时间,这样你就不用像我一样面对同样的问题了
# 3 楼答案
其实很简单
其中
cookieString
的格式与更传统的Set-Cookie
HTTP头相同,baseUrl
是cookie应该属于的站点