2016-10-16 5 views
1

Java 용 Apache httpclient에 문제가 있습니다. 나는 로그인 양식에서 모든 필드를 추출하고, 사용자 이름과 암호를 채우고, POST 요청을 작성하여 계정에 로그인하는 웹 사이트의 로그인 봇을 작성하고 있습니다. java에서 제공하는 클래스를 사용하여 시도했지만, 매번 로그인 페이지로 다시 던졌습니다. 아파치 클라이언트에서 작동하는 것처럼 보입니다.하지만 여전히 작동하는지 확인하기 위해 모든 쿠키 처리 코드를 제거하려고했습니다. 더 이상 쿠키를 목록에 저장하지 않고 요청에 쿠키를 추가하지 않지만 여전히 올바르게 로그인 한 것으로 보입니다. 어떻게 그렇게 될수 있니? 나는 cookiestore를 사용하지 않고 쿠키가 어디서 왔는지 모릅니다. 그래서 분명히 그들은 백그라운드에서 어딘가에 저장되어야합니다. 나는 새로운 세션을 시작하기 위해 그것들을 지울 필요가있다. 나는이Apache HTTP 클라이언트의 쿠키 - Java

CloseableHttpClient client = HttpClients.createDefault(); 

같은 클라이언트를 만들어 내 영어는 가난이

HttpPost post = new HttpPost(url+"/login"); 
HttpResponse response = client.execute(post); 

답변

0

같은 요청을합니다. 쿠키는 실제로 CookieStore에서 제공됩니다. 그러나 쿠키는 실행 (HttpUriRequest 요청)에서 작동하지 않습니다. 쿠키를 추가하거나 제거하려는 경우 execute (HttpUriRequest 요청, HttpContext 컨텍스트)를 사용할 수 있습니다. 예 :

import org.apache.http.HttpResponse; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.protocol.HttpClientContext; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClients; 

import java.io.IOException; 

/** 
* Created by y.wang on 11/16/16. 
*/ 
public class HttpClientTest { 
    public static void main(String[] args){ 
     CloseableHttpClient client = HttpClients.createDefault(); 
     HttpClientContext httpClientContext = new HttpClientContext(); 
     String url = ""; 
     HttpPost post = new HttpPost(url + "/login"); 
     try { 
      HttpResponse response = client.execute(post, httpClientContext); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     httpClientContext.getCookieStore().clear(); 
    } 
} 
관련 문제