Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在HTTP请求中发送对象_Java_Spring_Rest_Soap - Fatal编程技术网

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

Java 如何在HTTP请求中发送对象,java,spring,rest,soap,Java,Spring,Rest,Soap,我正在创建一个能够正确处理传入请求的Web服务(我知道,这是一个描述),我发现了一些显示SOAP WS的示例代码,如下所示: @SoapAction("some fine url") @ResponsePayload public CertResponse getCert(@RequestPayload Cert param) {...} 它从请求中获取Cert对象并对其进行正确管理。我想在REST方法中实现它,我将这个类更改为: @RequestM

我正在创建一个能够正确处理传入请求的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) 
    {...} 
但我不知道如何或者甚至是否有可能编写一个可以通过HTTPPOST发送对象的客户机


谁能给我一个提示,我怎样才能发送object
Cert
?或者如果我必须继续使用
@SoapAction
我应该怎么做才能让它工作?我想删除
@Controller
是不够的。

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

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

SOAP服务实际上与REST语义不兼容。现在还不清楚您使用的是什么SOAP框架。通常,大多数SOAP框架为您提供一种或另一种为WSDL生成SOAP客户机代码的方法。您可以查看cxf.apache.org。
对于REST服务,使用Jersey或Spring MVC之类的东西,SOAP服务实际上与REST语义不兼容。现在还不清楚您使用的是什么SOAP框架。通常,大多数SOAP框架为您提供一种或另一种为WSDL生成SOAP客户机代码的方法。您可以查看cxf.apache.org。
对于REST服务,在SOAP方法中使用类似Jersey或Spring MVC的东西,有一种定义良好的方法将每个类对象转换为SOAP格式的XML。因此,没有任何努力

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

基本上你有三个选择:

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

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

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

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

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


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

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

    基本上你有三个选择:

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

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

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

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

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