3

我需要将 XML Soap 请求发送到我服务器上的 url。我写了类似的东西

@RequestMapping("/SomeService")
@ResponseBody
public String index(@RequestBody String request) {
    mailService.sendMail("someone@gmail.com", "Subject", request);
    return "";
}

但是请求正文是空白的。我正在使用弹簧 3.2。我只需要 XML SOAP 内容。在这种情况下我该如何进行。提前致谢。

4

3 回答 3

2

让我建议一些方法来做到这一点@Akhil:

  1. 如果您想公开一个健壮的基于 SOAP 的端点,那么最好的方法是使用成熟的 JAX-WS 实现之一(比如 Apache CXF 或 Axis2)。

  2. 如果您想要更轻量级并且想要完全在 Spring 项目的保护伞下,我强烈建议使用 Spring-WS 作为端点来使用 SOAP 请求并提供响应 - Spring WS 在这里http: //static.springsource.org/spring-ws/sites/2.0/reference/html/index.html

  3. 如果这是一个临时端点,您不是出于真正的业务原因使用它,而是说只是为了捕获信息而不真正关心 SOAP 带来的其他功能——比如安全性、验证等、编组、解组支持等,那么一个选项将是使用 Spring 的HttpRequestHandlingServlet,这样您就可以实现一个 HttpRequestHandler ,它将 HttpServletRequest 作为参数并从中获取发布的内容。

正如您可能已经注意到的,这些都在 Spring MVC 之外,原因是框架倾向于使用原始 http 请求并在对它们进行预处理后提供参数,因此即使您编写了一个期望原始字符串的 @RequestMapped 方法,你不会干净地得到它。

于 2013-07-27T13:17:53.997 回答
0

试试下面的代码。我认为您必须将此方法定义为 POST。并定义标题。它将支持将其定义为 GET 但在服务器端它不会识别 @RequestBody 中的 Body 内容。

    @RequestMapping(value = "/SomeService", method = RequestMethod.POST, headers = "Accept=application/xml, application/json")
    @ResponseBody
    public String index(@RequestBody String request) {
        mailService.sendMail("someone@gmail.com", "Subject", request);
        return "";
    }
于 2013-07-24T08:40:02.057 回答
-1

在 bean 定义文件中添加以下 bean 定义。我的 bean 定义有 beans 前缀。

<beans:bean name="handlerAdapter"
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <beans:property name="messageConverters">
        <util:list>
            <beans:bean
                class="org.springframework.http.converter.StringHttpMessageConverter" />
        </util:list>
    </beans:property>
</beans:bean>
于 2013-07-21T06:27:02.323 回答