2011-07-01 14 views
0

私は過去数日間、これに対して壁に頭をぶつけていましたが、私はそれを解決できないので、誰かが私を助けてくれるよう祈っています。HttpClient - ログインしてからクッキーを失う

基本的に私はWordPressアカウントにログインしています。ログインの詳細を投稿し、ログインしていることを示すCookieを取得してから、ユーザーメンテナンスパネルにアクセスしてログオンページにリダイレクトされます。私は私のクッキーを循環するとき、私のログオンクッキーは消えてしまったようです。私は、新しいv4 HttpClientを使用しています。これはおそらく、より優れたクッキー管理機能を備えています。

何が起こっているのか分からない人は、本当に感謝しています。ここで

は完全に機能の例です:

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.cookie.Cookie; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.protocol.HTTP; 
import org.apache.http.util.EntityUtils; 

import java.util.ArrayList; 
import java.util.List; 

public class FormLoginDemo 
{ 

    public static void main(String args[]) 
    { 
     try 
     { 

      DefaultHttpClient httpclient = new DefaultHttpClient(); 

      HttpGet httpget = new HttpGet("http://www.articlepub.com/wp-login.php"); 

      HttpResponse response = httpclient.execute(httpget); 
      HttpEntity entity = response.getEntity(); 

      System.out.println("Login form get: " + response.getStatusLine()); 
      if (entity != null) { 
       EntityUtils.consume(entity); 
      } 
      System.out.println("Initial set of cookies:"); 
      List<Cookie> cookies = httpclient.getCookieStore().getCookies(); 
      if (cookies.isEmpty()) { 
       System.out.println("None"); 
      } else { 
       for (Cookie cooky : cookies) { 
        System.out.println("- " + cooky.toString()); 
       } 
      } 

      HttpPost httpost = new HttpPost("http://www.articlepub.com/wp-login.php"); 

      List <NameValuePair> nvps = new ArrayList<NameValuePair>(); 
      nvps.add(new BasicNameValuePair("log", "***********")); 
      nvps.add(new BasicNameValuePair("pwd", "***********")); 
      nvps.add(new BasicNameValuePair("rememberme", "forever")); 
      nvps.add(new BasicNameValuePair("redirect_to", "http://some-wp-site.com/wp-admin/")); 
      nvps.add(new BasicNameValuePair("testcookie", "1")); 
      nvps.add(new BasicNameValuePair("wp-submit", "Log In")); 


      httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

      response = httpclient.execute(httpost); 
      entity = response.getEntity(); 

      System.out.println("Login form get: " + response.getStatusLine()); 
      if (entity != null) { 
       EntityUtils.consume(entity); 
      } 

      System.out.println("Post logon cookies:"); 
      cookies = httpclient.getCookieStore().getCookies(); 
      if (cookies.isEmpty()) { 
       System.out.println("None"); 
      } else { 
       for (Cookie cooky : cookies) { 
        System.out.println("- " + cooky.toString()); 
       } 
      } 




      HttpGet httpGet = new HttpGet("http://www.articlepub.com/wp-admin/"); 
      response = httpclient.execute(httpGet); 
      entity = response.getEntity(); 
      System.out.println("Page Contents: " + EntityUtils.toString(entity)); 


      System.out.println("Login form get: " + response.getStatusLine()); 
      if (entity != null) { 
       EntityUtils.consume(entity); 
      } 

      System.out.println("Post get cookies:"); 
      cookies = httpclient.getCookieStore().getCookies(); 
      if (cookies.isEmpty()) { 
       System.out.println("None"); 
      } else { 
       for (Cookie cooky : cookies) { 
        System.out.println("- " + cooky.toString()); 
       } 
      } 




      httpclient.getConnectionManager().shutdown(); 

     } catch (Exception e) { 
      System.out.println(e); 

     } 

    } 

} 
+0

解決しましたか?そうでない場合は、スニペットの出力を投稿してください。 – Alin

答えて

2

あなたは、たとえば、クッキーを処理するためにHTTPClientを設定する必要があります:あなたはそれを

httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); 
関連する問題