2011-12-12 68 views
0

我需要使用凭据在https页面登录。但我的问题是,我无法从最初request.i使用webview.Bascically获取cookie首先需要得到来自http请求的cookie,然后用该cookie和用户凭证发送https请求。android webview获取初始cooke

以下是我的onCreate()方法

CookieSyncManager.createInstance(this); 
CookieManager cookieManager = CookieManager.getInstance(); 
cookieManager.setAcceptCookie(true); 
if (cookie != null) { 
    cookieManager.removeSessionCookie(); 
    String cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain() ; 
    cookieManager.setCookie(cookie.getDomain(), cookieString); 
    CookieSyncManager.getInstance().sync(); 
} 

WebView webView = (WebView) findViewById(R.id.webview); 
webView.getSettings().setJavaScriptEnabled(true); 

webView.loadUrl("www.xyz.com"); 

webView.setWebViewClient(new MyWebViewClient()); 

和MyWebViewClient

private class MyWebViewClient extends WebViewClient{ 

    @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 
    public void onPageFinished(WebView view, String url) { 
     CookieSyncManager.getInstance().sync(); 

    }; 

     return null; 
    } 

我打电话HTTPS通过这种方式

 HttpClient hc; 
    HttpGet get = null; 
    HttpResponse httpResponseData = null; 
    HttpParams httpParameters = new BasicHttpParams(); 
    HttpConnectionParams.setConnectionTimeout(httpParameters, 5000); 
    HttpConnectionParams.setSoTimeout(httpParameters, 5000); 

    final List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); 
    nvps.add(new BasicNameValuePair("id", id)); 
    nvps.add(new BasicNameValuePair("pass", pass)); 
    hc = new DefaultHttpClient(httpParameters); 
    String URL = "https://xyz.com"; 
    final UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8); 
    URL += p_entity; 
    get = new HttpGet(URL); 
    httpResponseData = hc.execute(get); 
    if(httpResponseData != null){ 

    } 

我如何应该先把饼干和附加链接它与这个请求。

感谢

回答

0

其实文件cookie不是单个值。对于特定的网址,你可以获得多个cookie值。因此,您必须将这些cookie值存入for循环中。示例

List<Cookie> cookies = ((AbstractHttpClient) httpClient).getCookieStore().getCookies(); 
       if (!cookies.isEmpty()) { 
       for (int i = 0; i < cookies.size(); i++) { 
       Cookie cookie1 = cookies.get(i);} 
       // Log.e("", "Cookie-->"+cookie1); 
       } 

我认为这会对您有所帮助。