2012-01-11 4 views
0

세션 ID와 URL을 전달하여 웹 페이지에 액세스하고 출력은 HTML 응답입니다. jSoup을 사용하여이 응답을 구문 분석하고 태그 요소를 가져 오려고합니다. Jsoup의 예제에서 연결 설정을위한 문자열을 사용하는 것을 볼 수 있습니다. 어떻게해야합니까?jsoup 연결 매개 변수

의사 코드 :

나는 위의 방법을 시도하고이 예외

java.io.IOException: 401 error loading URL http://www.abc.com/index 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:387) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143) 
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132) 

기본적으로 entity.getContent()가 연결 방법에 문자열로 전달해야하는 HTML 응답을 가지고 있어요. 그러나 그것은 효과가 없습니다.

답변

1

Apache Commons HttpClient와 Jsoup는 동일한 쿠키 저장소를 공유하지 않습니다. 기본적으로 HttpClient가 Jsoup의 Connection을 통해 검색 한 쿠키와 동일한 쿠키를 전달해야합니다. 당신은 또한 단지 HTTP 요청을 발사하고 쿠키를 유지하기위한 HttpClient를 계속 사용 할 수 있습니다, 또는

을 대신 통해 String로서의 HttpResponse 피드 : 당신은 여기에 몇 가지 구체적인 예를 찾을 수 있습니다 Jsoup#parse().

그래서이 수행해야합니다

HttpResponse httpResponse = httpclient1.execute(httpget, httpContext); 
String html = EntityUtils.toString(httpResponse.getEntity()); 
Document doc = Jsoup.parse(html, testUrl); 
// ... 

을 그건 그렇고, 당신은 반드시 후속 요청에 대해 HttpClient 완전히 새로운을 만들 필요가 없습니다. 이미 만든 httpclient을 다시 사용하십시오. 또한 String으로 응답을 얻는 당신의 방법은 어색합니다. 위의 예에서 두 번째 줄은 가장 간단한 방법을 보여줍니다.

0

그것은

Similar to 403 Forbidden, but specifically for use when authentication is possible but has failed or not yet been provided 수단 HTTP 오류 (401)를 도시한다.

따라서 자바 코드를 사용하여 웹 사이트에 로그인하거나 코드를 통해 쿠키를 보내야한다고 생각합니다.

+0

나는 내 pesudo 코드를 편집했습니다. Youc 내가 웹 사이트에 로그인하여 쿠키를 전달했는지 확인하십시오. – JNPW