我试图提供一个用Java编程的REST / XML Api.应用程序将获得一个参数,然后通过HTTP返回XML内容.
在PHP中,通过使用我的api由应用程序提供参数& string = helloworld的rest_api.PHP文件解决它的方式,然后我读取此字符串,用它进行计算或搜索,修改数据以满足我的XML模式并回复此数据一个echo,它使用HTTP响应将其发回.
如何使用Java正确执行此操作?
最佳答案
为此,两个Java扩展可以很好地协同工作:
> JAX-RS(参考实施泽西岛)
> JAXB(参考实施地铁)
两者都包含在Glassfish Java EE 5和6参考实现中.
简而言之,JAX-RS允许您通过添加@GET,@ POST,@ PUT或@DELETE注释之一将普通方法声明为Web服务. JAX-RS还具有自动解析路径和URL查询参数的注释,并且在大多数情况下它负责构造适当的响应对象.
JAXB通过添加@XmlRootElement,@ XMLElement,@ XMLID等自动将纯对象(POJO)与XML进行转换.当与JAX-RS结合使用时,编组和解组将以透明方式完成.
例如:
// POJO with JAXB annotations @XmlRootElement(name = "sensor") public class MyObject { @XmlID @XmlElement private String id; @XmlAttribute private String name; @XmlElement(name = "sensor-value") private Integer value; @XmlTransient // don't translate to XML private Double computedValue; // ...getters and setters } // POJO with REST interface @Path("/mywebservice") public class MyWebService { @EJB MySensorController controller; @GET @Produces("application/xml") public MyObject getCurrentSensorValue(@QueryParam("ID") String id) { // automatic unmarshalling from MyObject to XML return controller.getSensorValue(id); } }
@H_403_28@生成的XML看起来像这样:
@H_403_28@