2016-04-28 33 views
1

我一直在尋找這個問題,據說這個問題是使用用戶代理修復的,但事實並非如此。
我想要做的是從申請獲取餅乾,這個代碼Jsoup HTTP錯誤獲取URL。狀態= 403時做一個帖子請願

note: i'm try to do the petition to https webpage 

/*obtiene cookies de la peticion*/ 
     Connection.Response res = Jsoup.connect(liga).header("Content-Type","text/html;charset=UTF-8") 
       .cookie("TALanguage", "ALL") 
       .data("mode", "filterReviews") 
       .data("filterRating", "") 
       .data("filterSegment", "") 
       .data("filterSeasons", "") 
       .data("filterLang", "ALL") 
       .referrer(liga)   
       .header("X-Requested-With", "XMLHttpRequest") 
       .header("X-Puid",xpuid) 
       .data("returnTo",returnTo) 
       .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")       
       .method(Method.POST) 
       .execute(); 

     doc = res.parse(); 


     Map<String, String> cookies = res.cookies(); 

程序在該行.execute();此錯誤日誌中失敗:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=https://somepage.html 

    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:459) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181) 
    at mx.oeste.crawler.htmlunit.obtenerComentarios(htmlunit.java:82) 
    at mx.oeste.crawler.htmlunit.main(htmlunit.java:40) 
+0

您正在嘗試連接https,請嘗試使用http。我認爲問題在於你需要首先配置證書來調用https。 – tesnik03

+0

有辦法通過jsoup從站點獲取證書嗎? –

+1

如果不知道URL,很難說出問題所在。 – TDG

回答

1

嘗試設置內容類型標題爲「應用程序/ x-WWW的形式,進行了urlencoded」象下面這樣:

Connection.Response res = Jsoup.connect(liga) 
           .header("Content-Type","application/x-www-form-urlencoded") 
           .cookie("TALanguage", "ALL") 
           .data("mode", "filterReviews") 
           .data("filterRating", "") 
           .data("filterSegment", "") 
           .data("filterSeasons", "") 
           .data("filterLang", "ALL") 
           .referrer(liga)   
           .header("X-Requested-With", "XMLHttpRequest") 
           .header("X-Puid",xpuid) 
           .data("returnTo",returnTo) 
           .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")       
           .method(Method.POST) 
           .execute(); 

如果它不工作,試圖窺探你喜歡的瀏覽器WH從手動提取請願書中的cookies。您可以使用開發者工具來窺探您的瀏覽器。

+0

實際上我從我做的另一個查詢中獲取cookie之前做了一個 –

+0

@BJAA你有沒有窺探你的瀏覽器,看看它是如何執行POST查詢的? – Stephan

+0

@Stephan你好。你可以看看我的[post](https://stackoverflow.com/questions/45822632/why-do-i-get-http-403-from-my-app-but-i-can-browse-the -url-in-my-browser)我有同樣的錯誤,但是這個解決方案沒有解決它 – Bloomberg58