2012-08-07 78 views
0

我在使用PHP設置SoapClient時遇到了一些麻煩。看來我遇到的問題是比較常見的問題,但我還沒有找到合適的解決方案。我使用下面的代碼進行連接:SOAP WSDL解析錯誤

$varIDs = array(); 
    $varIDs[0] = '2147483732'; 


    try{ 
     $client = new SoapClient("../../../../ASP/webservice1.asmx?WSDL"); 
    } catch (Exception $e) { 
     echo $e . '<br>'; 
    } 

我得到的標準誤差,下面列出,有關無法加載的WSDL文件。

[07-Aug-2012 12:11:17] PHP Warning: SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: I/O warning : failed to load external entity &quot;../../../../ASP/webservice1.asmx?WSDL&quot; in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\php\utils\getISOxml.php on line 7 
[07-Aug-2012 12:11:17] PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from '../../../../ASP/webservice1.asmx?WSDL' in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\php\utils\getISOxml.php on line 7 

我不知道這個問題是在這裏。當我在瀏覽器中訪問URL時,我得到了有效的XML(以前從未使用過WSDL,因此我只是假設它是有效的)。有什麼建議麼?

編輯:根據以下來自@Madbreaks的建議,我嘗試更改我指向的URL(它現在讀取'http://vm0281sch/ATS/webservice2.asmx?WSDL')。起初,我認爲它是有效的,因爲它的反應是永久性的,但我不確定 - 它給了我一個新的錯誤,但我仍然沒有得到任何東西。我現在得到下面顯示的錯誤:

[07-Aug-2012 16:16:42] PHP Warning: SoapClient::SoapClient(http://vm0281sch/ASP/webservice1.asmx?WSDL) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\php\utils\getISOxml.php on line 6 

接下來是我之前得到的錯誤。我不知道這裏發生了什麼,但似乎這個問題實際上與我正在使用的URL有關。

+0

當你去什麼* * URL在瀏覽器? – Madbreaks 2012-08-07 20:23:51

+0

我剛剛遇到[this](http://www.digipedia.pl/usenet/thread/15676/652/),聲稱我無法調用當前服務器上的Web服務,但我不是我確定我在那裏放了任何股票。 – Crash 2012-08-07 22:04:03

+0

我認爲上面的文章可能是正確的 - 我試圖從另一個頁面發出請求,雖然我沒有收到服務器的預期回覆,但我不再收到錯誤消息。 – Crash 2012-08-07 22:11:22

回答

0

您的URI無效,錯誤非常明顯 - 找不到資源。你正在指定一個文件路徑,但是你的問題說你在訪問「URL」時會得到有效的XML。在代碼中放入相同的URL,而不是相對文件路徑。

編輯

如果你說的是真的,試試這個:

error_log('In dir: '.dirname(__FILE__)); 

$client = new SoapClient(dirname(__FILE__)."/../../../../ASP/webservice1.asmx?WSDL"); 

當你在它,在該行之前把事情處理好編輯

根據你所陳述如下,嘗試加載這樣的WSDL:

$client = new SoapClient('http://localhost/ASP/webservice1.asmx?WSDL'); 
+0

當我說我去過網址時,我的意思是說我已經去了那個帶有PHP代碼的URL,然後添加了相對路徑。相對路徑在打印時是正確的。 – Crash 2012-08-07 20:25:49

+0

你爲什麼用相對路徑擊中web服務?爲什麼不使用完全限定的URL直接打它? – raidenace 2012-08-07 20:31:08

+0

@Raidenace你爲什麼在我的回答中提出問題?在問題的評論部分詢問。但是對於它的價值,URL不是必需的:http://www.php.net/manual/en/soapclient.soapclient.php – Madbreaks 2012-08-07 20:32:16

相關問題