PHP WSDL SOAP无法导入架构

问题描述:

我试图使用外部web服务,但出现错误Parsing Schema: can't import schema from webservice_url。该服务使用HTTP基本身份验证并使用SSL。我可以通过Web浏览器登录并查看它生成的xml,但由于它不是我生成xml的代码,因此我无法更改生成的内容。我有以下代码。PHP WSDL SOAP无法导入架构

$config = array('login' => $user_id, 'password' => $password); 
$client = new SoapClient($url, $config); 
+0

您确定该URL正在生成XML吗? – Matt 2012-08-03 15:31:25

+0

你可以发布你通过浏览器看到的XML吗? $ url的价值是什么? – davidfmatheson 2012-08-03 15:35:48

+0

添加了url和xml – 2012-08-03 15:43:32

那么经过研究和在线阅读大量文章后,似乎这是php-soap的限制,并且有些建议指向使用curl来完成。我实际上决定完全避免使用PHP,因为我刚刚学习Ruby并且已经离开PHP。我通过使用Savon gem完成了我的上述任务,该gem在认证和设置cookie方面有一些非常好的文档。它使用这个宝石很好用。

我发现这对SoapClient的手册页的comment section

<?php 

$login = 'someone'; 
$password = 'secret'; 

$client = new SoapClient(
    'https://' . urlencode($login) . ':' . urlencode($password) . '@www.server.com/path/to/wsdl', 
    array(
     'login' => $login, 
     'password' => $password 
    ) 
); 

?> 

好像基本验证端点调用,而不是WSDL检索。

+0

嗯。我试过了。指出它的WSDL给出了与我的问题相同的错误,并将其指向模式给出了'SOAP-ERROR:解析WSDL:找不到' – 2012-08-03 16:23:04

+0

糟糕!在开始处有'http://'而不是'https://'。编辑答案来解决。当你尝试时你有改变吗? – davidfmatheson 2012-08-03 17:01:35

+0

是的,我做到了。我也把港口放在地址的后面。我尝试设置'proxy_host'到模式url,但是请求所有回来'NULL' – 2012-08-03 21:17:51