有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用http读取xml文件

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

非常感谢您的帮助

谢谢 达米恩


共 (3) 个答案

  1. # 1 楼答案

    使用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. # 2 楼答案

    如果您计划使用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");
    
  3. # 3 楼答案

    Dave Ray的答案确实快速而简单,但如果您需要通过需要身份验证的代理服务器,它将无法与HTTP重定向一起很好地工作。不幸的是,标准Java API的类(在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();