Android(安卓)WebView设置cookie
来源:互联网 发布:河北大学新区淘宝地址 编辑:程序博客网 时间:2024/05/20 09:43
最近两天一直想用安卓模拟登陆,利用新的WebView显示登陆后可以访问的页面,但是不管怎么访问需要登陆后才能访问的页面,还是跳回到登陆页,后来网上看了下是cookie没有设置,找了半天才到到合适的设置方法:
登陆方法:
private Cookie cookie;public static HttpContext localContext;<span style="color: rgb(255, 0, 0); "><strong>public static List<Cookie> cookies;//此为保存的cookie</strong></span>public String cookieStr;// public static Cookie cookie = null; /** * 登陆时保存cookie * @param url * @param data * @return */public String login(String url,String data[]){HttpClient client = null;String html = null;try {client = new DefaultHttpClient();<span style="color: rgb(255, 0, 0); "><strong>// 创建cookie store的本地实例 CookieStore cookieStore = new BasicCookieStore(); localContext = new BasicHttpContext(); // 绑定定制的cookie store到本地内容中 localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); </strong></span>HttpPost post = new HttpPost(url);List<NameValuePair> parameters = new ArrayList<NameValuePair>();parameters.add(new BasicNameValuePair("username", data[0]));parameters.add(new BasicNameValuePair("passwd", data[1]));parameters.add(new BasicNameValuePair("login", "%B5%C7%A1%A1%C2%BC"));UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters,"utf-8");post.setEntity(entity);HttpResponse response = client.execute(post<span style="color: rgb(255, 0, 0); ">,localContext</span>);if(response.getStatusLine().getStatusCode() == 200){InputStream content = response.getEntity().getContent();BufferedReader buffer = new BufferedReader(new InputStreamReader(content,"gbk"));String line = null;while((line=buffer.readLine())!=null){html+=line;} <span style="color: rgb(255, 0, 0); "><strong> cookies = cookieStore.getCookies();</strong></span> System.out.println("cookies.size():"+cookies.size()); if (!cookies.isEmpty()) { for(int i=0;i<cookies.size();i++){ System.out.println("- "+cookies.get(i).toString()); } }buffer.close();}else{System.out.println("UtilsLogin:"+response.getStatusLine().getStatusCode());}} catch (Exception e) {e.printStackTrace();}finally{if(client!=null){client.getConnectionManager().shutdown();}}return html;}
Activity中的oncreate()方法:
private WebView wvTempShow;private String receiveUrl;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_temp_web_view);wvTempShow = (WebView) findViewById(R.id.wv_tempShow);Intent intent = this.getIntent();receiveUrl = intent.getStringExtra("openUrl");<span style="color: rgb(255, 0, 0); "><strong>//获得cookie管理者CookieManager cookieManager = CookieManager.getInstance();//获取登陆时的cookieString oldCookie = UtilsLogin.cookies.get(0).getName()+"="+UtilsLogin.cookies.get(0).getValue()+";"+UtilsLogin.cookies.get(1).getName()+"="+UtilsLogin.cookies.get(1).getValue()+";" ;</strong></span>System.out.println("oldCookie:"+oldCookie);cookieManager.setCookie(receiveUrl, oldCookie);wvTempShow.getSettings().setDefaultTextEncodingName("gbk");wvTempShow.loadUrl(receiveUrl);wvTempShow.setWebViewClient(new MyWebViewClient());}class MyWebViewClient extends WebViewClient{@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon); }@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);}}
需要注意的是:要看访问的页面需要什么样的cookie字符串可以用以下方法:
CookieManager cookieManager = CookieManager.getInstance();String CookieStr = cookieManager.getCookie("http://bkjw.guet.edu.cn/student/public/menu.asp?menu=mnall.asp"); System.out.println("TempWebViewonPageFinished = " + CookieStr);
然后自己像以上String oldCookie中一样自己拼好,再在cookieManager.setCookie(url,cookieString);中设置
0 0
- Android(安卓)WebView设置cookie
- 【Android】WebView设置Cookie
- android webview 设置 Cookie
- Android WebView设置cookie
- android webview里设置cookie
- android webview里设置cookie
- android webview里设置cookie
- android webview里设置cookie
- android webview 设置cookie 需要注意
- android中给WebView设置Cookie
- 在Android WebView中设置Cookie
- Android中设置Webview支持Cookie
- android上WebView设置cookie,以及设置webview cookie在部分手机失效
- android上WebView设置cookie,以及设置webview cookie在部分手机失效
- iOS 设置webView cookie
- webView设置cookie
- webView设置Cookie
- WebView设置Cookie
- 异步执行
- STL 各种非变异算法。
- Android 4.0的图形硬件加速及绘制技巧(3)
- Makefile 中的 ifeq 的缩进导致的错误
- Eclipse/ADT 卡在sdk content loader 0%的解决方法
- Android(安卓)WebView设置cookie
- svn is already locked解决方案
- Java调用C(Linux下实现Java本地方法)
- cocos2d-x3.2 Socket传输Json字符串
- DIV样式汇总
- Android 字体相关
- CentOS下手动Step By Step安装GitLab
- 两分钟彻底让你明白Android Activity生命周期(图文)
- js面向对象类