我無法調用從PHP設置的Web服務。以下錯誤消息中的模糊地址http://XXX.XXX.XXX.XXX/test.asmx?wsdl
將返回有效的WSDL。我已經成功地試圖稱呼其爲使用VB.net客戶端的Web服務,但是當我把它從PHP在Debian我得到以下信息:致命錯誤:未捕獲SoapFault異常:[WSDL]
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://XXX.XXX.XXX.XXX/test.asmx?wsdl' in /var/www/domain/mywebsite.com/public_html/catalog/fomeus/orders.php:101 Stack trace: #0 /var/www/domain/mywebsite.com/public_html/catalog/fomeus/orders.php(101): SoapClient->SoapClient('http://XXX.XXX.XXX.XXX/', Array) #1 {main} thrown in /var/www/domain/mywebsite.com/public_html/catalog/fomeus/orders.php on line 101
還有什麼問題呢?我已經將我的代碼包含在下面的Web服務和PHP客戶端中。
Web服務:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
...
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebService1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
End Class
PHP客戶端:
require_once($_SERVER['DOCUMENT_ROOT']."/catalog/fomeus/includes/soap/nusoap.php");
$objClient = new soapclient("http://XXX.XXX.XXX.XXX/test.asmx?wsdl",
array('trace' => 1, 'exception' => 0, 'cache_wsdl' => 0));
print_r($objClient -> HelloWorld());
我使用PHP版本5.2.6如果這是任何幫助。我在不同的論壇上經歷了很多帖子,試圖找出問題所在。很多人都遇到同樣的問題,但迄今爲止我找到的解決方案都不適合我。任何幫助將不勝感激。
工作,我不知道這是什麼可能,但是,是否有可能爲你嘗試的NuSOAP? – Nacho 2011-03-10 01:37:43
嘗試在創建SoapClient對象的地方圍繞行包裝try..catch塊。不要忘了catch應該是一個SoapFault類型 - 例如catch(SoapFault $ e){}而不是catch(Exception $ e){} 在catch中,可以查詢異常字段,(getMessage等)或var_dump例外,然後發佈它告訴你的內容。 – Stephen 2011-03-10 03:44:49
你可以發佈wsdl嗎? – zode64 2011-03-12 00:39:40