解决 PHP SOAP-ERROR: Parsing WSDL: Couldn't load from 问题

当使用soap

$url = "http://********?wsdl";
$objSoapClient = new SoapClient($url);

创建一个对象的时候,有时候会出现

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://********?wsdl' : failed to load external entity "http://********?wsdl"

可能是因为接口不稳定。
解决方案,建议使用try

$url = "http://********?wsdl";
try{
    $objSoapClient = new SoapClient($url);
} catch (Exception $e) {
    print $e->getMessage();
}

这样就不会在生产代码运行时,接口不稳定,造成报错。

后期使用发现不是接口的问题,可能是php soap的问题。具体是为什么我也不清楚,经过查找资料。使用nusoap会比较好点,至少没发生这个问题。
nusoap下载地址
我的资源nusoap0.9.5

php
require_once("nusoap.php");

$url = "http://*****?WSDL";
$client = new nusoap_client($url, "wsdl");
// 避免乱码
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'UTF-8';

// 然后通过调用对方提供的方法
$client->call('function_name', $param);

这样应该就可以解决这个问题了。

你可能感兴趣的:(PHP)