0

我正在创建一个可以正确处理传入请求的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是不够的。

4

3 回答 3

2

在 SOAP 方法中,有一种定义明确的方法可以将每个类对象转换为 SOAP 格式的 XML。因此,没有任何努力。

如果您将使用 RESTful 方法,则必须描述您的 Cert 或 CertResponse 对象将如何写入/读取响应/请求。

基本上你有三个选择:

  1. 使用 JSON 或 XML 或纯字符串。转换您的 Web 服务描述符,以便请求和响应是其中之一(JSON、XML、字符串)。然后您的 getCert 方法应将请求转换为 Cert 对象,将您的响应准备为 CertResponse 对象并将其转换为适当的响应类型。

  2. 保持您的 getCert 方法不变。但是您需要指定“如何从请求中读取 Cert 对象”和“如何将 CertResponse 对象写入响应” 您需要定义扩展接口 MessageBodyReader 和 MessageBodyWriter 的类。在这些类中,应该实现类似的转换逻辑,将您的对象转换为 JSON 或 XML 或字符串。

    在这两个选项中的任何一个中,您需要实现两件事:将 JSON/XML/String 转换为 Cert 的方法,将 CertResponse 对象转换为 JSON/XML/String 的方法。

    您可以执行基于文本的实现,它通过文本处理解析/构造请求/响应,并且仅使用 String 类。或者,您可以使用一些库,例如带有 JSONObject 类的 JSON 库,或者 Java 包附带的基于 Java SAX 或 DOM 的 XML 库。

  3. 查看应用程序框架,例如 Spring。它们可能会提供将对象自动转换为 JSON 或 XML 的方法,从而减少必要的编程工作。

于 2012-11-22T20:29:33.050 回答
1

Spring允许您将来自客户端的 JSON 对象作为请求参数传递,它会自动将它们转换为您的对象。这个讨论有一些例子。

于 2012-11-22T20:01:13.537 回答
1

SOAP 服务与 REST 语义并不真正兼容。而且还不清楚您使用什么 SOAP 框架。通常,大多数 SOAP 框架为您提供一种或另一种方法来为您的 WSDL 生成 SOAP 客户端代码。您可以查看 cxf.apache.org。对于 REST 服务,使用 Jersey 或 Spring MVC 之类的东西

于 2012-11-22T20:04:36.273 回答