【发布时间】:2012-11-02 11:30:42
【问题描述】:
我尝试编写我的 PHP Client Soap,它使用 ASP.Net Web 服务,并通过身份验证进行保护。 我的php代码是:
<?php
ini_set("soap.wsdl_cache_enabled", "0");
try {
$client = new SoapClient("https://www.webservicexxx.com:60443/service.asmx?WSDL", array('location' => 'https://webservicexxxcom:60443/service.asmx',
'login' => "myLogin", 'password' => "myPAssword"));
} catch (SoapFault $e) {
echo $e;
}?>
我收到此错误消息:
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://www.webservicexxx.com:60443/service.asmx?WSDL' : failed to load external entity "https://www.webservicexx.com:60443/service.asmx?WSDL" in /var/www/webservice2/soap-client.php:5 Stack trace: #0 /var/www/webservice2/soap-client.php(5): SoapClient->SoapClient('https://www.web...', Array) #1 {main}
知道我在 ubuntu 服务器上的 php.ini 上设置了启用此扩展:
extension = php_openssl.dll
extension = php_soap.dll
extension = php_curl.dll
当我尝试使用身份验证在同一台服务器上解析另一个 php web 服务时,它可以工作:
try {
$client = new SoapClient("https://xx.xx.xx.xx:443/webservice1/notificationManager.wsdl", array('location' => 'http://xx.xx.xx.xx./webservice1/soap-server.php',
'login' => "myLogin", 'password' => "myPass"));
} catch (SoapFault $exception) {
echo $exception;
}
为什么我无法从第一个网络服务获得响应?
【问题讨论】:
-
只需将 url 复制并粘贴到浏览器中的 wsdl 即可查看是否看到 wsdl。通过这样做,您可以确定不是连接问题。
-
wsdl 文件
https://www.webservicexx.com:60443/service.asmx?WSDL可以通过网络浏览器访问,并且需要认证。
标签: php ssl wsdl basic-authentication soap-client