【问题标题】:Call Web Service from https and parse responded xml data in Java从 https 调用 Web 服务并在 Java 中解析响应的 xml 数据
【发布时间】:2010-03-12 13:15:35
【问题描述】:

我需要连接 https url,发送我的请求模式,然后我会从 web 服务获得一些 xml 响应。

对于我正在使用的 https url 连接:

URL myurl = new URL(httpsURL);
                HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
                con.setDoOutput(true);
                con.setDoInput(true);
                con.setUseCaches(false);
    con.setRequestProperty("Content-type","text/xml");

所以,从上面的代码中,我得到了来自服务器的响应 XML。现在我的问题是哪个解析器最适合我将响应的 xml 数据解析为我的简单 Java 对象。

我对此进行了很多研究,并获得了各种解决方案,但我对选择合适的解决方案感到困惑。

如果有人对一些示例示例有建议,请提供..

提前谢谢...

编辑:上面的 https 响应不是肥皂

【问题讨论】:

    标签: java xml-parsing webservice-client


    【解决方案1】:
    【解决方案2】:

    如果这是一个 SOAP 服务,那么您应该使用 SOAP 客户端 API,而不是像 Spring-WS 或 JAX-WS。

    【讨论】:

    • 感谢 Mike 的回复,但这是一个简单的 xml,而不是肥皂。
    【解决方案3】:

    为此我们使用 Metro 库,它需要 Java 1.5 并包含在 Java 6 中。

    然后你会得到一个结果的 DOM 树,然后可以很容易地对其进行后处理。

    我们使用 IntelliJ IDEA 通过 Metro 将 WSDL 转换为 Java 源代码。

    【讨论】:

      【解决方案4】:

      我建议看看 Castor (http://www.castor.org/xml-mapping.html) - 这是一种将 XML 映射到 POJO 的极其简单的方法。 它根据您的 XML 模式(在您的情况下为 WSDL 文件)生成 Java 类。

      完成解析后,响应就很简单了:

      StringReader sr = new StringReader(inMessageString);
      YourSoapResponse response = (YourSoapResponse)Unmarshaller.unmarshal(YourSoapResponse.class, sr);
      

      Castor 相对较快(一旦预热),但如果您的 XML 响应“巨大”,您可能需要重新考虑并使用 Stax (http://stax.codehaus.org/Home)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-20
        • 2013-01-03
        • 2017-07-04
        • 1970-01-01
        • 2012-08-02
        • 2015-07-17
        相关资源
        最近更新 更多