如何向外部API发送GET请求并解析其XML响应?

问题描述:

我需要向外部API发送HTTP GET/POST请求,该API返回XML数据,然后解析这些数据。在JSP中是否存在一个API?如何向外部API发送GET请求并解析其XML响应?

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

您可以使用URLConnection来发送HTTP请求并获取HTTP响应作为InputStream。您可以使用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 Cla ss不一定会导致技术问题,但最终可能会导致维护噩梦。

+0

thanku。之后,如何访问特定的元素?数据包含未编组内容。如何访问“用户名”元素的形式呢? – 2012-02-18 05:20:10

+0

呃,只需像上例那样将一个普通的javabean getter方法添加到'Data'类。你熟悉javabeans吗?你有没有打扰点击JAXB链接?它向您指出了JAXB教程。 – BalusC 2012-02-18 05:21:24

+0

我在答案中编辑了一个基本示例。 – BalusC 2012-02-18 05:25:39