如何根据wsdl获取SOAP内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据wsdl获取SOAP内容相关的知识,希望对你有一定的参考价值。

参考技术A 通过 HTTP/GET 请求 Web 服务的 endpoint URL 可以获取 WSDL 数据,向这个 endpoint URL 使用 HTTP/POST SOAP 数据就是调用这个 Web 服务。

因此,你直接用 HTTP/GET 方法就可以了,比如直接用 JDK 中的 URLConnection

SOAP - 加载本地 WSDL 文件

【中文标题】SOAP - 加载本地 WSDL 文件【英文标题】:SOAP - load local WSDL file 【发布时间】:2019-01-24 09:31:48 【问题描述】:

如何将本地 WSDL 文件加载到SoapClient

$wsdl = __DIR__.'/wsdl.wsdl';
$this->client = new SoapClient($wsdl);

$xsd = __DIR__.'/wsdl/xsd/xmldsig-core-schema.xsd';

PHP 致命错误:SOAP-ERROR: Parsing WSDL: 找不到任何可用的 在 WSDL 中绑定服务。

从 WSDL 文件到 XSD 文件的相对路径:./xsd/xmldsig-core-schema.xsd

WSDL

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" >
    <wsdl:types>
</wsdl:definitions>

【问题讨论】:

您是否尝试在soap客户端的第二个参数中设置soap版本?只需添加一个数组作为第二个参数:new SoapClient($wsdl, [ 'soap_version' =&gt; SOAP_1_1 ]);。当 SOAP_1_1 不起作用时,请尝试 SOAP_1_2。也许您的问题已经解决了。 【参考方案1】:

在您的 WSDL 文件中,

<soap:binding style="document" transport="https://schemas.xmlsoap.org/soap/https"/>

应该是

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

【讨论】:

HTTPS 无处不在 FTW :)

以上是关于如何根据wsdl获取SOAP内容的主要内容,如果未能解决你的问题,请参考以下文章

根据wsdl生成soap请求格式

SOAP/Web Service/WSDL关系

.Net中如何将wsdl转成soap格式文件

soapui调用rest接口参数怎么获取

连接到soap wsdl服务

如何在 Java 中使用 SOAP Web 服务