2010-06-15 7 views
2

Java의 모든 사이트에 로그인하는 데 문제가 있습니다. 기본 URL 연결 POST 요청을 사용하고 있지만 쿠키를 올바르게 처리하는 방법이 확실하지 않습니다. 나는이 가이드를 시도했다 : http://www.hccp.org/java-net-cookie-how-to.html 그러나 그것을 얻을 수 없었다. 나는 근본적으로 며칠 동안 노력해 왔고, 누군가 나를 돕고 싶다면 정말 도움이 필요합니다.Java : POST로 로그인 할 때 쿠키 처리

나는 그것이 지저분하다고 말했을 것이고 나는이 물건을위한 맞춤 라이브러리를 사용해야한다고 말했다. 하나를 다운로드하려고했지만 설치하고 작동시키는 방법을 모르겠습니다. 나는 몇 시간 동안 여러 가지 일을 시도해 왔지만 지금은 효과가 없을 것입니다. 차라리 표준 URL 연결을 사용하여이 작업을 수행하고 싶지만, 다른 사람이이 라이브러리를 더 잘 작동하도록 도울 수 있다면 큰 도움이 될 것입니다.

내가 공부할 수있는 출처를 게시 할 수 있다면 정말 고맙겠습니다. 내가 필요한 것은 : POST 로그인 데이터를 사이트로 가져 오기 -> 사이트에서 쿠키 가져 오기 및 저장 -> 다음 URL 연결 요청과 함께 쿠키를 사용하여 사이트의 로그인 버전을 얻습니다.

아무도 도와 줄 수 있습니까? 극도로 감사 할 것입니다. 정말 많은 의미가 있습니다. 누군가 나를 실제로 돕고 싶다면 인스턴트 메신저 주소를 남겨주세요. 시간 내 주셔서 감사합니다.

+0

이 사이트의 요점은 사람들이 문제를 해결하고 공개적으로 그렇게함으로써 다른 사람들이 혜택을 누릴 수 있도록 돕는 데 있습니다. 오류 메시지와 함께 시도한 일부 코드와 작동하지 않는 것에 대한 설명을 게시하십시오. –

+0

그건 아무것도 도움이되지 않습니다. 내 코드는 기본적으로 내가 링크 된 사이트의 내용입니다. 거기에 많은 코드가 있습니다. 며칠 동안 답변이 필요했습니다. 아무도 도와 줄 수 있습니까? – Cloakbot

+0

그 링크는 잠시 후에 사라질 가능성이 높습니다. 그러나이 사이트는 여기에 넣은 코드를 유지합니다. – abelito

답변

5

이 코드는 나를 위해 작동 :

내가도를 잡아 필요

URL url = new URL(formPage); 
    URLConnection conn = url.openConnection(); 

    String cookieHeader = conn.getHeaderFields().get("Set-Cookie").get(0); 
    Matcher m = JSESSION_PATTERN.matcher(cookieHeader); 
    m.find(); 
    jSessionId = m.group(1); 

(I은 로그인 페이지를 검색 할 때, 쿠키가 실제로 설정되어 내 경우) 로그인 양식을 얻기 csrf 값도 있지만, 지금은 생략 할 것입니다.

그때 수행하여 로그인 :

URL url = new URL(formPage); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    conn.setRequestProperty("Cookie", "JSESSIONID=" + encode(jSessionId, "UTF-8")); 

    conn.setRequestMethod("POST"); 
    conn.setDoOutput(true); 
    conn.setDoInput(true); 

    DataOutputStream out = new DataOutputStream(conn.getOutputStream()); 
    out.writeBytes(String.format("_csrf_token=%s&xyz=%s&zyx=%s", 
      encode(csrfToken, "UTF-8"), 
      encode(USER, "UTF-8"), 
      encode(PASS, "UTF-8"))); 

    out.close(); 

    // I have absolutely no idea why this is needed. 
    conn.getInputStream().close(); 


    String cookieHeader = conn.getHeaderFields().get("Set-Cookie").get(0); 
    Matcher m = JSESSION_PATTERN.matcher(cookieHeader); 
    m.find(); 
    jSessionId = m.group(1); 

그때 검색 할 수 및 공정 페이지가 도움이

URL url = new URL(thePage); 
    URLConnection conn = url.openConnection(); 

    conn.setRequestProperty("Cookie", "JSESSIONID=" + encode(jSessionId, "UTF-8")); 

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String str; 
    while ((str = in.readLine()) != null) { 
     // process str... 

호프를 사용!

관련 문제