如何根据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' => 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内容的主要内容,如果未能解决你的问题,请参考以下文章