2012-08-03 53 views
0

我試圖使用外部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

回答

1

那麼經過研究和在線閱讀大量文章後,似乎這是php-soap的限制,並且有些建議指向使用curl來完成。我實際上決定完全避免使用PHP,因爲我剛剛學習Ruby並且已經離開PHP。我通過使用Savon gem完成了我的上述任務,該gem在認證和設置cookie方面有一些非常好的文檔。它使用這個寶石很好用。

0

我發現這對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