【问题标题】:Jsoup HTTP error fetching URL. Status=403 when doing a post petitionJsoup HTTP 错误获取 URL。发帖请愿时状态=403
【发布时间】:2016-04-29 03:36:09
【问题描述】:

我一直在寻找这个问题,据说这个问题是使用用户代理解决的,但事实并非如此。
我要做的是从请愿书中获取 cookie,这是代码

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)

【问题讨论】:

  • 您正在尝试连接https,请尝试使用http。我认为问题是您需要先配置证书才能调用 https。
  • 有没有办法使用 jsoup 从站点获取证书?
  • 不知道网址很难判断问题出在哪里。
  • @Stephan 不是骗子,这是我为获得这些 cookie 而提出的第一个请愿

标签: java jsoup


【解决方案1】:

尝试将内容类型标头设置为“application/x-www-form-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();

如果它不起作用,请尝试在手动从请求中获取 cookie 的同时窥探您最喜欢的浏览器。您可以使用开发者工具来监视您的浏览器。

【讨论】:

  • 实际上我是从另一个查询中获取 cookie,然后再发布一个
  • @B.J.A.A.您是否监视过您的浏览器以查看它是如何执行 POST 查询的?
  • @Stephan 你好。你能看看我的post我有同样的错误,但这个解决方案没有解决它
猜你喜欢
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多