我需要为一些遗留肥皂服务创建一个客户端。我使用 java,最好创建一个具有适当休息端点的项目,该项目代理对这个古老的 sopa 服务的请求/响应。我有一个 wsdl url,但它有 use="encoded" 这意味着我猜它使用 rpc 风格,并且很长一段时间以来没有得到任何框架的支持。我相信我需要使用 apache axis 1 来调用此服务。我见过的大多数帖子都是 2012 年左右的,甚至在那时,那些旧帖子就说 rpc肥皂服务已经被极度弃用了。我没有任何选项来更新远程 wsdl,我需要调用这些服务。我想我公司里曾经知道它是做什么的或者它是如何工作的人早已不复存在了。经过大量试验和错误后,我能够从 wsdl 生成一些代码,现在我有了这些类:
我不知道如何调用这些类,并且在线文档都是死胡同。请救救我。我假设我需要使用这些类之一并输入 url,然后我需要调用 rpc 函数之一并传递一些有效负载。原本期望生成一些强类型的 DTO 类,但我想如果必须的话,我可以传递一个 XML 字符串。
任何帮助或工作代码示例的链接将不胜感激!
你应该尝试这样的事情:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SoapProxyController {
@GetMapping("/soap-endpoint")
public String proxyRequest(@RequestParam String param1, @RequestParam String param2) {
try {
EntitiesWebServiceBrokerLocator locator = new EntitiesWebServiceBrokerLocator();
EntitiesWebServiceBrokerPortSoapBindingStub stub = (EntitiesWebServiceBrokerPortSoapBindingStub) locator.getYourServicePort();
// Set the endpoint URL if necessary
stub._setProperty(EntitiesWebServiceBrokerPortSoapBindingStub.ENDPOINT_ADDRESS_PROPERTY, "url-to-be-fille");
// Call the SOAP method
String response = stub.yourSoapMethod(param1, param2);
return response;
} catch (Exception e) {
e.printStackTrace();
return "Error: " + e.getMessage();
}