我正在嘗試自動化一個進程。爲此我需要通過點擊一次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