SOAP - 加载本地 WSDL 文件

Posted

技术标签:

【中文标题】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 :)

以上是关于SOAP - 加载本地 WSDL 文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP SoapClient over selfsigned certificate,SOAP-ERROR:解析WSDL:无法从'https://加载

如何解析从文件加载的soap消息?

使用php soapclient工具包显示访问netsuite wsdl无法加载wsdl

SoapServer无法在Zoap软件包上加载生成的wsdl文件

web服务器:SOAP,WSDL,UDDI

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