繁体   English   中英

我如何在HTTP请求中发送对象

[英]How can i send object in HTTP request

我正在创建一个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,String)。 然后,您的getCert方法应将请求转换为Cert对象,将响应准备为CertResponse对象,并将其转换为适当的响应类型。

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

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

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

  3. 检出诸如Spring之类的应用程序框架。 它们可能提供了将对象自动转换为JSON或XML的方式,从而减少了所需的编程工作。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM