【问题标题】:SOAP-ERROR: Parsing Schema: can't import schema from domain.com/WebService.svc?xsd=xsd0SOAP-ERROR: Parsing Schema: can't import schema from domain.com/WebService.svc?xsd=xsd0
【发布时间】:2019-07-19 15:38:25
【问题描述】:

问题

我正在使用网络服务,但我无法连接总是收到以下错误消息:

SOAP-ERROR: Parsing Schema: can't import schema from domain.com/WebService.svc?xsd=xsd0

我确实解决了所有未找到解决方案的 SO 问题。

服务器

Linux、php7.1

启用 PHP 模块

bz2, calendar, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd,
gettext, hash, iconv, intl, json, ldap, libxml, mbstring, mysqli, mysqlnd,
openssl, pcntl, pcre, PDO, pdo_dblib, pdo_mysql, pdo_sqlite, Phar, posix,
readline, Reflection, session, shmop, SimpleXML, soap, sockets, SPL,
sqlite3, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, 
xmlreader, xmlwriter, xsl, zip, zlib

代码

$wsdlFile = **fullpathtowsdlfile**;
$context = stream_context_create([
            'ssl' => [
                // set some SSL/TLS specific options
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            ],
             
            'http'=>array(
                'user_agent'=>'SoapClient'
            )
             
        ]);

$options = array(
            'trace'=>1,
            'location'=>self::$wsdl,
            'exception'=>1,
            'cache_wsdl'=>WSDL_CACHE_NONE,
            //'stream_context'=>$context, // disable but leaved for reference.
            'local_cert'=> **fullpath**,
            'soap_version'=> SOAP_1_1
        );

$client =  new \SoapClient($wsdlFile, $options);

还尝试了 Url 而不是 Wsdl 文件,我得到了同样的错误。我可以通过 telnet domain 80 、 telnet domain 413 和我的浏览器连接到 url。

我错过了什么?任何帮助将不胜感激。

【问题讨论】:

  • 是公共 WSDL 还是受某种身份验证系统保护(例如 IP 地址检查)?可以发一下 WSDL 地址吗?
  • 是一个内网wsdl :(

标签: php soap php-7.1


【解决方案1】:

问题是自签名证书,将我的代码更新到此,现在错误消失了。


$context = stream_context_create([
            'ssl' => [
                // set some SSL/TLS specific options
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            ] 
        ]);

$options = array(
            'trace'=>1,
            'exception'=>0,
            'stream_context'=>$context,  

        );
$client =  new \SoapClient($wsdlFile, $options);

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多