2016-09-09 1 views
1

this link에 수동으로 접근 할 수 있으며 Firefox 브라우저를 사용하여 올바르게 검색 할 수 있지만 JSOUP을 사용하여 연결하지 못했습니다.스레드 "main"의 예외 java.net.SocketTimeoutException : 읽기가 jsoup에서 시간 초과되었습니다.

코드 : 내가 모르는 뭔가가

String url = "https://www.sosnc.gov/trademrk/search.aspx"; 
Connection.Response response = Jsoup.connect(url).timeout(45000) 
      .method(Connection.Method.GET) 
      .ignoreContentType(true) 
      .userAgent("Mozilla/5.0 (Windows NT 6.3; rv:40.0) Gecko/20100101 Firefox/40.0") 
      .followRedirects(true) 
      .execute(); 
Map<String, String> loginCookies = response.cookies(); 
Document document = response.parse(); //search results 
Element __VIEWSTATE = document.select("input[name=__VIEWSTATE]").first(); 
Element __VIEWSTATEGENERATOR = document.select("input[name=__VIEWSTATEGENERATOR]").first(); 
Element __PREVIOUSPAGE = document.select("input[name=__PREVIOUSPAGE]").first(); 
Element __EVENTVALIDATION = document.select("input[name=__EVENTVALIDATION]").first(); 
response = Jsoup.connect(url).timeout(45000) 
      .data("SosMenu_SiteTreeView_ExpandState", "ennnnnnnnnnnn") 
      .data("SosMenu_SiteTreeView_PopulateLog", "") 
      .data("SosMenu_SiteTreeView_SelectedNode", "SosMenu_SiteTreeViewn2") 
      .data("ToolsTreeView_ExpandState", "ennn") 
      .data("ToolsTreeView_PopulateLog", "") 
      .data("ToolsTreeView_SelectedNode", "") 
      .data("__EVENTARGUMENT", "") 
      .data("__EVENTTARGET", "") 
      .data("__EVENTVALIDATION", __EVENTVALIDATION.val()) 
      .data("__PREVIOUSPAGE", __PREVIOUSPAGE.val()) 
      .data("__VIEWSTATE", __VIEWSTATE.val()) 
      .data("__VIEWSTATEGENERATOR", __VIEWSTATEGENERATOR.val()) 
      .data("ctl00$ctl00$SosContent$SosContent$Submit1", "Search") 
      .data("ctl00$ctl00$SosContent$SosContent$Type", "Goods") 
      .data("ctl00$ctl00$SosContent$SosContent$txtSearc", query) 
      .cookies(loginCookies) 
      .method(Connection.Method.POST) 
      .ignoreContentType(true) 
      .userAgent("Mozilla/5.0 (Windows NT 6.3; rv:40.0) Gecko/20100101 Firefox/40.0") 
      .header("host", "www.sosnc.gov") 
      .referrer("https://www.sosnc.gov/trademrk/search.aspx") 
      .followRedirects(true) 
      .execute(); 
    document = response.parse(); //search results 
    System.out.println(document); 

건가요? 서버에 대한 Jsoup 게시물 요청이므로 쿠키와 필수 매개 변수도 추가했지만 여전히 결과를 얻지 못했습니다.

+0

디버그 로그 또는 예외 메시지가 있습니까? 응답 객체를 검사 할 수 있습니까? 안에 뭐가 들었 니? – Woody

+0

예외가'Read timed out ... '이라는 제목이고 응답이 직접 –

+0

을 던지고 있기 때문에 응답이 오지 않습니다. https 대신 http로 시도 했습니까? – Woody

답변

1

당신은 시간 제한을받을 이유는 모르겠지만, 당신은 쉽게 훨씬 간단한 방법으로 데이터를 얻을 수 있습니다 -

String query = "abc"; 
String url = "https://www.sosnc.gov/trademrk/results.aspx?searchstr=" + 
       query + 
      "&Type=GOODS"; 
Connection.Response response = Jsoup.connect(url).timeout(45000) 
      .method(Connection.Method.GET) 
      .ignoreContentType(true) 
      .userAgent("Mozilla/5.0 (Windows NT 6.3; rv:40.0) Gecko/20100101 Firefox/40.0") 

      .followRedirects(true) 
      .execute(); 
System.out.println(response.body()); 

없음 쿠키 또는 추가 매개 변수는 필요하지 않습니다.

+0

예, 매우 쉬웠습니다. 많은 감사 :) –

관련 문제