我正在尝试自动化一个进程。为此我需要通过点击一次URL来获取XML,一次运行多次,然后解析它。对于该节目的一次运行,该URL可以在4到25次之间任意地点击。这一切似乎都很好,直到返回403错误响应。从URL中提取内容时出现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.请注意,如果需要按照所讨论的方式进行更改,我无法控制源代码ut here
此外,我不确定this link是否有帮助。
谢谢。
[UPDATE 1]: 这是某种方式工作,而不必
sleep
:
try{
doc = builder.build(conn.getInputStream());
}catch(IOException ioEx){
doc = builder.build(new InputSource(url.openStream()));
}
您是否尝试“减慢”处理速度,例如每次通话后睡觉? – home
我确实考虑过它,但还没有尝试过。你是否认为先打正常然后在收到403的情况下暂时“睡觉”会更好?我想避免每次击中后都要“睡觉”。 – hkansal
为什么你不得不打这么多次? XML是否每次都会更改?如果不是,你不能暂时储存所有的东西,解析出你需要的东西吗? – Collecter