问题描述
这是我的代码:
$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错误:解析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);
解决方法
从命令行尝试:
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
,要处理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函数。