2016-09-09 13 views
1

this linkに手動でアクセスし、Firefoxブラウザを使用して正しく検索できましたが、JSOUPを使用して接続できません。スレッド "main"の例外java.net.SocketTimeoutException:読み取りがタイムアウトになりました。

コード:

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ポストリクエストです。そのため、Cookieと必要なパラメータも追加しましたが、結果は得られません。

+0

デバッグログや例外メッセージはありますか?レスポンスオブジェクトを調べることはできますか?内部には何がありますか? – Woody

+0

例外は、 'Read timed out ... 'というタイトルで、httpsではなくhttpで試しましたか? –

+0

例外を直接投げているので、応答が来ていませんか? – 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

はい、とても簡単でした。どうもありがとう :) –

関連する問題