ioexception-xml解析

yrefmtwq  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(402)

我正在尝试解析来自以下url的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)

这个代码有什么问题?

uqjltbpv

uqjltbpv1#

必须设置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,这将自动完成)

sirbozc5

sirbozc52#

多亏了@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());

相关问题