Restlet:在HTTP请求中发送xml

时间:2011-06-19 18:29:51

标签: java xml http xml-serialization restlet

如何在HTTP GET或HTTP put请求中发送xml文件?我正在使用restlet框架。 我是新手,根据我读过的内容,我应该序列化xml。 执行此操作后,如何在HTTP请求中发送它?

1 个答案:

答案 0 :(得分:1)

这很简单,即使你不使用一个组合件的库(我假设Restlet确实提供了一些简化):就像你提到的,你需要的只是一个HTTP连接/请求,并且能够生成(并且可能,消费)XML。 因此,除了Restlet特定的东西(希望其他人可以解释),这里是一个“游击队”的方法,只使用独立的部分。

要获得HTTP连接,您可以使用JDK功能(如果这不起作用,apache http client或async-http-client可以提供更多功能);类似的东西:

URL url = new URL("http://myservice.mycompany.com:8080/path/to/service");
// configure settings here if/as necessary
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// if you need to post stuff, do:
conn.setRequestMethod("POST");
// need to set content type too possibly
conn.setDoOutput(true); // but only if you do POST stuff
OutputStream out = conn.getOutputStream();
// here you would output XML request
//...
out.close();
// and now read response
InputStream in = conn.getInputStream();
// and process it
// ...
in.close();

现在,关于生成/使用XML,您可以使用所有通过输入/输出流读/写XML的常用工具。如果您喜欢数据绑定(Java POJO到/从XML),JAXB是可行的方法(javax.xml.bind。*); JDK 1.6及更高版本捆绑默认实现。

或者,您可以简单地使用Stax(javax.xml.stream。*)实现(例如Woodstox)来通过简单的调用来读/写XML;对于奖励积分,请查看StaxMate,这样可以简化这种风格。