如何在 HTTP GET 或 HTTP put 请求中发送 xml 文件?我正在使用reSTLet框架。 我对此很陌生,根据我所读到的内容,我应该序列化 xml。 完成此操作后,如何在 HTTP 请求中发送它?
最佳答案
即使您不使用组合各个部分的库(我假设 ReSTLet 确实提供了一些简化),它也相当简单:就像您提到的,您所需要的只是一个 HTTP 连接/请求,以及生成的能力(并且可能,消耗)XML。 因此,除了 ReSTLet 特定的事情(希望其他人能够解释)之外,这里有一种“游击”方法,仅使用独立的部分。
要获得 HTTP 连接,您可以使用 JDK 功能(如果这不起作用,apache http 客户端或 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 的常用工具。如果您喜欢数据绑定(bind)(Java POJO 与 XML 之间的绑定(bind)),JAXB是要走的路(javax.xml.bind.*); JDK 1.6 及以上版本捆绑默认实现。
或者,您可以简单地使用 Stax (javax.xml.stream.*) 实现,例如 Woodstox ,通过简单的调用来读/写XML;如需奖励积分,请查看 StaxMate这大大简化了这种风格。
关于java - ReSTLet:在 HTTP 请求中发送 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6404326/