2011-07-01 3 views
0

Я уже стучал головой о стену над этим в течение последних нескольких дней, и я просто не могу это обработать, поэтому я молюсь, чтобы кто-то помог мне с этим.HttpClient - входит в систему, а затем теряет cookie

В основном я вхожу в учетную запись WordPress, я публикую данные для входа и получаю файл cookie, который показывает, что я вошел в систему. Затем я пытаюсь получить доступ к панели обслуживания пользователей, и я перенаправляюсь обратно на страницу входа в систему , Когда я просматриваю свои куки-файлы, кажется, что мой файл cookie для входа исчез. Я даже использую новый v4 HttpClient, который предположительно имеет лучшее управление файлами cookie.

Если кто-нибудь имеет представление о том, что происходит, я бы очень признателен.

Вот полностью функциональный пример:

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); 
Смежные вопросы