从URL获取内容时出错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.请注意,如果需要在此处进行更改,我无法控制来源
此外,我不确定此链接是否有用。
谢谢。
[更新1]:这是以某种方式工作,而不必sleep
:
try{ doc = builder.build(conn.getInputStream()); }catch(IOException ioEx){ doc = builder.build(new InputSource(url.openStream())); }
403表示请求被理解但服务器拒绝处理它。 查看您发送的标头。 当失败时,运行TRACE
http方法来检索您正在执行的确切请求。
当您建立http
连接时,您将与请求一起发送您要执行的方法。
其中一种方法是TRACE
。
通过执行TRACE方法,您可以在身体反应中看到您刚刚执行的请愿。 所以你可以看看它是否仍然有效。
如果他们有任何机制,也许你超过了最多的请愿数量。
- 弹性搜索java.lang.NoClassDefFoundError:org / elasticsearch / transport / Netty3Plugin
- 使用GSON反序列化嵌套的JSON字符串