2013-06-06 138 views
1

我試圖解析從以下網址的XML響應 -IOException異常 - XML解析

http://imdbapi.org/?type=xml&q=argo 

對於這一點,我已經寫了下面的代碼 -

try 
    { 
     XMLReader myReader = XMLReaderFactory.createXMLReader(); 
     xmlHandler handlerobj = new xmlHandler(); 
     myReader.setContentHandler(handlerobj); 
     myReader.parse(new InputSource(new URL("http://imdbapi.org/?type=xml&q=argo").openStream())); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Error"); 
    }  

xmlHandler是擴展一個類的DefaultHandler。 在上面的代碼中,我得到一個IOException

堆棧跟蹤 -

java.io.IOException: Server returned HTTP response code: 403 for URL: http://imdbapi.org/?type=xml&q=argo 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
at java.net.URL.openStream(Unknown Source) 
at gui.getimdbdata(gui.java:73) 
at gui.main(gui.java:64) 

這有什麼代碼問題?

+1

你能後的異常的堆棧跟蹤嗎? –

+0

添加了堆棧跟蹤。 –

+0

服務器拒絕允許請求的操作([響應代碼:403](http://en.wikipedia.org/wiki/HTTP_403)) 一切正常,服務器配置?你能以其他方式獲取XML文件嗎? – Quirin

回答

0

解決這個問題,感謝@dijkstra!

該Web服務將只允許瀏覽器獲取XML數據。

以下是修改 -

 url = new URL(urlString); 
     uc = url.openConnection(); 
     uc.addRequestProperty("User-Agent", 
       "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 

     uc.connect(); 
     uc.getInputStream(); 
     BufferedInputStream in = new BufferedInputStream(uc.getInputStream()); 
2

您必須設置user.agent:

System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36  (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36"); 

(如果你與你的瀏覽器連接到URL這是自動完成的)