2012-07-17 41 views
0

我正在使用SoapClient將一些數據從PHP站點發送到.Net WCF服務。
這是我(簡稱爲清楚起見)代碼:WCF - 參考另一個WSDL的「不完整」WSDL

$wsdl = '/var/www/libraries/MyWsdl.xml'; 
$myClient = new SoapClient($wsdl); 

後來,實際調用:

try {   
    $res = $myClient->Foo($someParameter); 
} 
catch(SoapFault $e){ 
    //... 
} 
catch(Exception $e){ 
    //... 
} 

這個偉大的工程,當一切都在網上,和錯誤處理工作,如果目標服務器正在調用Foo
問題是如果目標服務器關閉,那麼SoapClient構造函數會失敗,即使我已經爲它提供了一個帶有WSDL的靜態XML文件(與URL「http://www.destination.com/MyService?wsdl」相反)。

我相信這一切,因爲WSDL包含對另一個WSDL的引用:

<wsdl:import namespace="http://MyCompany.Services" location="http://www.destination.com/MyService?wsdl=wsdl0"/> 

這等WSDL包含調用參數的定義。

那麼,我怎樣才能「內聯」原來的第二個「子WSDL」?
這是否允許我創建SoapClient而不啓動到目標服務器的連接?


這是我的服務定義:

[ServiceContract(Namespace = "http://MyCompany.Services")] 
public interface IMyService 
{ 
    [OperationContract] 
    [XmlSerializerFormat(Style = OperationFormatStyle.Rpc, Use = OperationFormatUse.Literal)] 
    string Foo(string myParameter); 
} 

回答