2011-12-12 67 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); 
       } 

我認爲這會對您有所幫助。