我正在创建一个Web服务,它将正确处理传入的请求(我知道,这是一个描述)我找到了一些示例代码,它呈现SOAP WS,看起来像:
@SoapAction("some fine url")
@ResponsePayload
public CertResponse getCert(@RequestPayload Cert param)
{...}
它从请求中获取Cert
对象并正确管理它。我想用 REST 方法来完成它,我将这个类更改为如下所示:
@RequestMapping(value="getCert", method = RequestMethod.POST)
@ResponseBody
public CertResponse getCert(@RequestBody Cert param)
{...}
但是我不知道如何或者是否可以编写一个可以通过 HTTP Post 发送对象的客户端。
谁能给我一个提示,我如何发送对象Cert
?或者,如果我必须继续使用 @SoapAction
我应该做什么才能使其正常工作?我想删除 @Controller
还不够。
最佳答案
在 SOAP 方法中,有一种定义明确的方法将每个类对象转换为 SOAP 格式的 XML。因此,没有任何努力。
如果您将使用 RESTful 方法,则必须描述如何将 Cert 或 CertResponse 对象写入响应/请求或从响应/请求中读取。
基本上你有三个选择:
使用 JSON 或 XML 或纯字符串。转换您的 Web 服务描述符,以便请求和响应是其中之一(JSON、XML、字符串)。然后,您的 getCert 方法应将请求转换为 Cert 对象,将响应准备为 CertResponse 对象,并将其转换为适当的响应类型。
保持 getCert 方法不变。但是您需要指定“如何从请求中读取 Cert 对象”和“如何将 CertResponse 对象写入响应” 您需要定义扩展接口(interface) MessageBodyReader 和 MessageBodyWriter 的类。在这些类中,应该实现类似的转换逻辑,将对象与 JSON、XML 或字符串相互转换。
在这两个选项中的任何一个中,您都需要实现两件事:将 JSON/XML/String 转换为 Cert 的方法,将 CertResponse 对象转换为 JSON/XML/String 的方法。
您可以进行基于文本的实现,它通过文本处理来解析/构造请求/响应,并且仅使用 String 类。或者您可以使用一些库,例如带有 JSONObject 类的 JSON 库,或者 Java 包附带的基于 Java SAX 或 DOM 的 XML 库。
查看 Spring 等应用程序框架。它们可能提供自动将对象转换为 JSON 或 XML 的方法,从而减少必要的编程工作。
关于java - 如何在 HTTP 请求中发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13519174/