httpclient 의 cookies 문제 해결 방법 1

더 읽 기
HtmlUnit 이 웹 페이지 에서 의 표현 을 테스트 하려 면 웹 페이지 를 방문 하여 다음 웹 페이지 로 이동 한 후, 항상 server 에서 찾 을 수 없 는 페이지 로 돌아 가 IE 로 접근 하 는 것 이 좋 습 니 다.또 IE 가 웹 페이지 를 방문 한 후 run 이 작성 한 HtmlUnit 코드 가 순조롭게 통과 되 는 이상 한 현상 이 있다.IE 를 끄 면 10 분 정도 코드 가 통 과 됩 니 다.이 시간 을 넘 기 면 아무리 괴롭혀 도 통 하지 않 는 다.    이 현상 을 분석 해 보면 쿠키 가 장난 치 는 것 같다.쿠키 가 유효 할 때 HtmlUnit 코드 는 IE 에서 발생 하 는 쿠키 로 요청 을 보 낼 수 있 습 니 다. 쿠키 가 효력 을 잃 으 면 server 측 에서 쿠키 에 대한 검증 이 통과 되 지 않 아 오류 알림 페이지 를 자 연 스 럽 게 가리 킵 니 다.    이 어 Html Unit 의 소굴 에서 검색 해 보면 찾 을 수 있 는 정 보 는 불쌍 하 다.원본 을 여 는 것 중 가장 큰 단점 은 문서 가 완전 하지 않다 는 것 이다.하지만 돈 을 벌 수 있 는 곳 이기 도 하 다. 모든 것 이 발표 되 어 문서 로 정리 되 었 다. 어느 날 상업 화 되 어 상담 비 는 한 푼 도 받 지 못 했다.    결국 구 글 을 통 해 HtmlUnit 의 위 키 를 찾 았 습 니 다. 사이트 에는 유용 한 정보 가 많 습 니 다. 그 중 하 나 는 Single Cookie Header 입 니 다. 내용 은 다음 과 같 습 니 다. Some web sites, especially those driven by Microsoft products (in my experience). require that cookies be sent from the web browser back to the server using a single Cookie: http header. The default behavior of HtmlUnit , which uses commons-httpclient , is to send multiple Cookie: headers, one for each cookie. See Bug 1117500 for details.     일부 사이트 (대부분 마이크로소프트 제품 을 사용 하 는) 는 브 라 우 저 에서 server 로 쿠키 를 보 낼 때 단일 쿠키 를 사용 해 야 한 다 는 뜻 이다.HtmlUnit 이 사용 하 는 HttpClient 는 여러 개의 쿠키 입 니 다.한 마디 로 System . setProperty ( "apache.commons.httpclient.cookiespec" , CookiePolicy . BROWSER_COMPATIBILITY );
DefaultHttpParams.getDefaultParams().setBooleanParameter(HttpMethodParams.SINGLE_COOKIE_HEADER, true); ( )
    이렇게 말 하면 보 낸 내용 이 같 더 라 도 한 번 에 보 낸 것 이 완성 되 는 것 이 아니 기 때문에 서비스 기간 에 쿠키 의 내용 이 정확 하지 않다 고 생각 합 니 다.이것 은 내 가 HttpClient 를 도구 로 사용 할 때 이미 한 번 만난 적 이 있다.실제 브 라 우 저 와 이 가짜 브 라 우 저 사이 에 어떤 차이 가 있 는 지 이틀 이 걸 렸 다.시간 이 지나 면 잊 어야 하 는데, 이번에 또 이런 문제 에 부 딪 혔 으 니, 나중에 또 잊 지 않도록 기록 하 는 것 이 좋 겠 다.    HtmlUnit 같은 좋 은 도구 가 이런 문제 에 걸 려 포기 하 는 것 은 정말 가치 가 없다.

좋은 웹페이지 즐겨찾기