【问题标题】:How to send a GET request to an external API and parse its XML response?如何向外部 API 发送 GET 请求并解析其 XML 响应?
【发布时间】:2012-03-09 11:14:36
【问题描述】:

我需要向返回 XML 数据的外部 API 发送 HTTP GET/POST 请求,然后解析这些数据。 JSP 中是否存在用于此的 API?

如果我在一个类中使用该代码并在JSP中使用它的一个方法,会有什么问题吗?

【问题讨论】:

    标签: java xml jsp


    【解决方案1】:

    您可以使用URLConnection 发送HTTP 请求并以InputStream 的形式获取HTTP 响应。您可以使用 JAXB 将包含 XML 文档的 InputStream 解组为遵循 XML 结构的 javabean 实例。

    想象一下 XML 响应看起来像这样,

    <data>
        <foo>fooValue</foo>
        <bar>barValue</bar>
    </data>
    

    你的 JAXB javabean 看起来像这样,

    @XmlRootElement
    public class Data {
    
        @XmlElement
        private String foo;
    
        @XmlElement
        private String bar;
    
        // Getters/setters.
    }
    

    然后你可以像下面这样解组它:

    InputStream input = new URL("http://example.com/data.xml").openStream();
    Data data = (Data) JAXBContext.newInstance(Data.class).createUnmarshaller().unmarshal(input);
    String foo = data.getFoo(); // fooValue
    // ...
    

    与 JSP 中的所有其他 Java 代码行一样,在 JSP 文件而不是普通 Java 类中执行此操作不一定会导致技术问题,但最终可能会导致维护噩梦。

    【讨论】:

    • 谢谢。之后如何访问特定元素?数据包含未编组的内容。如何访问“用户名”元素?
    • 呃,就像示例中一样,将一个普通的 javabean getter 方法添加到 Data 类中。你熟悉javabean吗?您是否费心单击 JAXB 链接?它为您指明了 JAXB 教程。
    • 我是新手。我查过那本手册。但这很难理解。因此,为了避免让自己感到困惑,我试图找到一个简单易懂的教程。我对java bean不太了解。它是创建一个属性名称与 XML 元素相同的类并编写一个函数来返回该变量,你在说吗?
    • 感谢这个例子。 JAXB javabean 与类相同。正确吗?
    • 呃,这只是一个 Java 类,是的。我建议先把这一切放在一边,花几天/几周的时间阅读一本基本的 Java 书籍/教程,以熟悉 Java 语言和术语的基础知识。
    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多