【问题标题】:PHP - SOAP "Parsing WSDL: Couldn't load from ..." ErrorPHP - SOAP“解析 WSDL:无法从...加载”错误
【发布时间】:2020-08-13 11:07:55
【问题描述】:

这是我的代码:

$this->options = [
    "login" => $username,
    "password" => $password
];
try {
    $this->request = new SoapClient('https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl', $this->options);
} catch(Exception $e) {
    throw new Exception($e->getMessage());
}

这是错误信息:

致命错误:未捕获的异常:SOAP-ERROR:解析 WSDL:无法从“https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl”加载:加载失败外部实体“https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl”

知道如何解决这个错误吗?

[更新]

我可以用这段代码获得函数:

$wsdl = file_get_contents('https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl');

但是这段代码还是报错:

SoapClient('https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl', $this->options);

【问题讨论】:

标签: php soap wsdl


【解决方案1】:

从命令行尝试:

wget https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl

php -r '$a = new SoapClient("https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl"); var_dump($a);'

也许导游没有提供资源ID

【讨论】:

  • 我收到了这条消息:object(SoapClient)#1 (2) { ["_soap_version"]=> int(1) ["sdl"]=> resource(5) of type (SOAP SDL) }
【解决方案2】:

要处理 SOAP 异常,您可以试试这个answer。以下代码是返回 SOAP 响应的独立代码。

 $params = array(
    "login" => "USERNAME",
    "password" => "PASSWORD"
);
try {
    $client = new SoapClient('https://servis.turkiye.gov.tr/services/g2g/kdgm/test/uetdsesya?wsdl', array($params));
} catch(Exception $e) {
    throw new Exception($e->getMessage());
}

列出所有可用的 SOAP 函数:

echo " List of available SOAP functions <br/><pre>"; var_dump($client->__getFunctions()); echo "</pre>";

列出所有可用的 SOAP 类型:

echo "List of SOAP types <br/><pre>"; var_dump($client->__getTypes()); echo "</pre>";

answer 解释了如何访问任何可用的 SOAP 函数。

【讨论】:

    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 2011-02-27
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多