我尝试学习如何制作 SpringBoot SOAP Web 服务。我跟随 this描述和我修改了这个项目的源代码。 A 将 addRequest 添加到 XSD 并生成 java 类。但是当我尝试使用 SoapUI 调用添加操作时,我收到错误代码 404。原始的 StudentDetailRequest 工作正常。
学生 wsdl 位于 http://localhost:8080/service/studentDetailsWsdl.wsdl
CalculatorEndpoint 看起来像这样:
package com.howtodoinjava.endpoints;
import com.howtodoinjava.repository.CalculatorService;
import com.howtodoinjava.repository.StudentRepository;
import com.howtodoinjava.xml.school.AddRequest;
import com.howtodoinjava.xml.school.AddResponse;
import com.howtodoinjava.xml.school.StudentDetailsRequest;
import com.howtodoinjava.xml.school.StudentDetailsResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
@Endpoint
public class CalculatorEndpoint
{
private static final String NAMESPACE_URI = "http://www.howtodoinjava.com/xml/school";
private final CalculatorService calculatorService;
@Autowired
public CalculatorEndpoint(CalculatorService calculatorService) {
this.calculatorService = calculatorService;
}
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "AddRequest")
@ResponsePayload
public AddResponse add(@RequestPayload AddRequest request) {
AddResponse response = new AddResponse();
response.setReturn(this.calculatorService.add(request.getA(),request.getB()));
return response;
}
}
经过我修改的 github 存储库位于这里。另一个项目是 here,用于我尝试过的简单 addRequest。如果我尝试在浏览器中加载 http://localhost:8080/ws/calculator-service 我会收到 405 错误代码。 (此 wsdl 位于 http://localhost:8080/ws/CalculatorServiceWsdl.wsdl。
请帮助我。我不明白spring SOAP服务的机制。感谢您的所有建议。
好的,我这样修改了一行:
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "addRequest")
(小写“addRequest”)现在可以使用了。
在 SOAP 响应中,您没有使用与 http://localhost:8080/service/studentDetailsWsdl.wsdl 相同的 URL。尝试使用相同的 URL。