代码之家  ›  专栏  ›  技术社区  ›  Damien

使用HTTP读取XML文件

  •  6
  • Damien  · 技术社区  · 15 年前

    有人知道通过HTTP快速读取XML文件的方法吗? (例如,我有一个文件位于 http://www.abc.com/file.xml )如何从Java应用程序读取此文件

    非常感谢您的帮助

    谢谢 达米安

    3 回复  |  直到 15 年前
        1
  •  9
  •   Dave Ray    15 年前

    使用 java.net.URL 得到一个 InputStream :

    final URL url = new URL("http://www.abc.com/file.xml");
    final InputStream in = new BufferedInputStream(url.openStream());
    // Read the input stream as usual
    

    异常处理和为简洁而省略的内容。

        2
  •  3
  •   Jesper    15 年前

    戴夫·雷的回答确实简单快捷,但是如果你必须通过一个需要身份验证的代理服务器,那么它就不能很好地处理HTTP重定向。不幸的是,标准JavaAPI的类(在Java.NET中)缺少一些功能,或者在这种情况下很难使用。

    开放源码库 Apache HttpClient 可以自动处理重定向,并使其易于与需要身份验证的代理服务器一起工作。

    下面是一个基本示例:

    HttpClient client = new HttpClient();
    GetMethod method = new GetMethod("http://www.abc.com/file.xml");
    
    int statusCode = client.executeMethod(method);
    if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + method.getStatusLine());
    }
    
    byte[] responseBody = method.getResponseBody();
    
        3
  •  0
  •   laz    15 年前

    如果您计划使用W3C DOM,但对任何IO或HTTP详细信息都不感兴趣,可以执行以下操作:

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    
    ...
    
    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    final DocumentBuilder builder = factory.newDocumentBuilder();
    final Document document = builder.parse("http://www.abc.com/file.xml");