【问题标题】:Restlet: sending xml in an HTTP requestRestlet:在 HTTP 请求中发送 xml
【发布时间】:2011-06-19 18:29:50
【问题描述】:

如何在 HTTP GET 或 HTTP put 请求中发送 xml 文件?我正在使用restlet框架。 我对此很陌生,根据我读过的内容,我应该序列化 xml。 这样做之后,如何在 HTTP 请求中发送它?

【问题讨论】:

  • 什么样的服务器软件?
  • 我正在使用restlet,遵循rest的架构。
  • 将此信息添加到您问题的内容和标题中。

标签: java xml http xml-serialization restlet


【解决方案1】:

这很简单,即使您不使用组合片段的库(我假设 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 的常用工具。如果您喜欢数据绑定(Java POJO 到/来自 XML),JAXB 是您的最佳选择(javax.xml.bind.*); JDK 1.6 及以上捆绑默认实现。

您也可以简单地使用 Stax (javax.xml.stream.*) 实现,例如 Woodstox,通过简单的调用来读取/写入 XML;要获得奖励积分,请查看StaxMate,它大大简化了这种风格。

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多