java - 如何在 HTTP 请求中发送对象

标签 java spring rest soap

我正在创建一个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 对象写入响应/请求或从响应/请求中读取。

基本上你有三个选择:

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

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

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

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

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

关于java - 如何在 HTTP 请求中发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13519174/

相关文章:

java - 如何在 Spring data rest 中返回深层嵌套投影?

java - EJB3 计时器是否继承到创建它们的 bean?

java - 带有嵌入式 jetty 服务器的 Spring MVC 资源

java - ReSTLet:在 validator 中检索 http 正文

spring - 如何在 Spring RestTemplate 请求上设置 "Accept:" header ?

java - 让 Hibernate 和 SQL Server 更好地处理 VARCHAR 和 NVARCHAR

java - 使用 @ContextConfiguration 在 JUnit 上使用不同的构造函数参数测试 Spring bean

spring - 我们可以以 thymeleaf 形式发布 JWT token 吗

database - 如何保护数据库连接字符串

java - 使用 Java 创建 WADL 和 WSDL?