강지훈
2008-03-03 17:09:09
6
6516

HTTPClient 로그인이 절대로 안되네요 도움좀 부탁드립니다. 인증이 안됩니당 ㅜㅜ


 

 

익스플로러로 로그인 할때의 원문입니다. 이것을 보고 제가 HTTPclient를 이용해서

 

같은 메세지를 보내는데 정말 똑같이 썼는데도 안됩니다.

GET /cookie.php?url=staemme.php%3Fscreen%3Doverview_villages%26intro&sid=28fc3b4155ee HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight, */*
Referer: http://www.bujokjeonjaeng.kr/
Accept-Language: ko
Cookie: __utma=206304256.823736595.1204185627.1204512253.1204528677.9; __utmz=206304256.1204528677.9.8.utmccn=(referral)|utmcsr=kr1.bujokjeonjaeng.kr|utmcct=/staemme.php|utmcmd=referral; __utmb=206304256; __utmc=206304256; cid=1453361721; __utma=202689355.606963042.1204185641.1204512249.1204528675.13; __utmz=202689355.1204185641.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); ad_position=1; __utmb=202689355; __utmc=202689355; sid=28fc3b4155ee; secret=4d8a817e9b1f
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1)
Proxy-Connection: Keep-Alive
Host: kr1.bujokjeonjaeng.kr
Pragma: no-cache

 

 

HTTPClient는 다음과 같습니다------------------------------------제가 보낸스트림

 

GET /cookie.php?url=staemme.php%3Fscreen%3Doverview%26intro&sid=99d85a5938a2 HTTP/1.1

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1)

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight, */*

Accept-Encoding: gzip,deflate

Accept-Charset: EUC-KR,utf-8;q=0.7,*;q=0.7

Content-Type: application/x-www-form-urlencoded

Connection: keep-alive

Referer: http://www.bujokjeonjaeng.kr/

Cookie: __utma=206304256.823736595.1204185627.1204512253.1204528677.9; __utmz=206304256.1204528677.9.8.utmccn=(referral)|utmcsr=kr1.bujokjeonjaeng.kr|utmcct=/staemme.php|utmcmd=referral; __utmb=206304256; __utmc=206304256; cid=1453361721; __utma=202689355.606963042.1204185641.1204512249.1204528675.13; __utmz=202689355.1204185641.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); ad_position=1; __utmb=202689355; __utmc=202689355;

Host: kr1.bujokjeonjaeng.kr

Cookie: sid=99d85a5938a2

Cookie: secret=22943334a5e0

코드는---------------------------------------------------------------------

GetMethod authget = new GetMethod(authpost.getResponseHeader("Location").getValue());
        authget.setRequestHeader("Host", "www.bujokjeonjaeng.kr");
        authget.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1)");
       
        authget.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/x-silverlight, */*");
        authget.setRequestHeader("Accept-Encoding", "gzip,deflate");
        authget.setRequestHeader("Accept-Charset", "EUC-KR,utf-8;q=0.7,*;q=0.7");
        authget.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        authget.setRequestHeader("Connection", "keep-alive");
        authget.setRequestHeader("Referer", "http://www.bujokjeonjaeng.kr/");

 

왜 안되는걸까요 ㅜㅜ 힘들다 2주일째 ㅜㅜ

0
  • 답변 6

  • 강지훈
    2008-03-03 17:10:30
    안되는 메세지가 브라우저가 쿠키를 지원안한다고 나오거든요?~?~?~ 근데 분명히 쿠키를찍어보면 전부 제대로 나옵니다............
  • parana
    2008-03-03 17:52:15
    제가 이해를 잘못한건지모르겠는데..
    HTTPClient가 결국 Server-to-Server 방식으로 호출하는게 아닌가요?
    그러면 쿠키는 사용자 pc에 저장이 되는 거니깐 당연히 안되는게
    정상같은데요?-_-?
  • 강지훈
    2008-03-03 18:06:53
    쿠키를 파일로 PC로 저장안하고 그냥 변수에 넣었잖아용
  • 강지훈
    2008-03-03 18:07:30
    HTTPClient 프로그램내에 쿠키를 자기가 알아서 다루는 루틴이 있더라구요
  • 강지훈
    2008-03-03 18:08:01
    접속을 종료시키지 않고 HTTPClient객체를 계속 유지하면서 method만 setpath하면 쿠키가 유지되더라구요...
  • 임은천
    2008-03-04 11:17:40
    세션키는 새로 접속하면 처음에 서버로 부터 전송됩니다. 그리고 웹 클라이언트는 이후 부터 세션키 부분(Set-Cookies)은 다시 전송할 때, 처음에 수신한 세션키를 사용해서 똑같이 사용해야 합니다. 그리고 보안이 강화되었기 때문에 서버와 클라이언트 양쪽의 정확한 패킷을 확인하기 위해서 패킷 분석기로 확인해 보구요. 정 답답하면 그냥 소켓으로 접속해서 서버, 클라이언트가 무엇을 보내는 지 직접 눈으로 확인할 수도 있겠죠. 이런 일을 대신해주는 것으로 HttpMonitor, Fiddler 등의 툴이 있습니다.

    질문하신 분께서, 확인한 후에 그걸 그대로 복사해서 보내면, 이미 만료된 세션키를 보내는 것입니다. 그러면 서버에서는 아마도 새로운 세션키를 보내줄 텐데 그것을 또 받아서 저장해 두어야 하는 것이구요.
    이 과정이 복잡하기 때문에, 쉽게 하기 위해서 제가 HttpClient를 가르쳐 드렸었는데요. HttpClient 참조를 저장하면 세션이 유지 되기 때문에, HttpClient 참조를 담아두고 재사용하면 해결될 문제인데 왜 계속 잡고 계신 것인지 잘 모르겠네용.
  • 로그인을 하시면 답변 을 등록할 수 있습니다.