从URL获取内容时403错误

时间:2011-08-09 13:55:39

标签: java http-status-code-403

我正在尝试自动化流程。为此,我需要通过在1次运行中多次点击URL来获取XML,然后解析它。对于程序的1次运行,URL可以在4到25次之间的任何地方命中。这一切看起来都很好,直到返回403错误响应。

有趣的是,403会在每次第5或第6次出现URL时出现。

我正在使用JDOM来解析XML响应。

我尝试过这些代码:

Document doc = builder.build(new InputSource(url.openStream()));

HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB;     rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)"); 
Document doc = builder.build(conn.getInputStream());

第二个我得到了例外:

org.jdom.input.JDOMParseException: Error on line 1: White spaces are required between publicId and systemId.

有人可以帮助我摆脱403.请注意,如果需要根据here

进行更改,我无法控制来源。

另外,我不确定this link是否有帮助。

谢谢。

<小时/> [更新1]: 这在某种程度上有效,无需sleep

try{
            doc = builder.build(conn.getInputStream());
        }catch(IOException ioEx){
            doc = builder.build(new InputSource(url.openStream()));
}

1 个答案:

答案 0 :(得分:3)

403表示请求已被理解,但服务器拒绝处理它。查看您发送的标头。当失败时,运行TRACE http方法来检索您正在执行的确切请求。

当您建立http连接时,您会将请求与您要执行的方法一起发送。

其中一种方法是TRACE

通过执行TRACE方法,您可以在身体反应中看到您刚刚执行的请愿。所以你可以看看它是否仍然有效。

如果他们有任何机制,也许你超过了最多的请愿数。