2010-03-30 45 views
0

我正在嘗試做一些C#SOAP調用,並且似乎無法獲得有關如何執行此操作的任何良好示例。我閱讀了我的一篇關於PHP中的SOAP調用的old question,並認爲可能讓你們用C#重寫它會是一個很好的開始。幫我轉換這個PHP SOAP代碼到C#

這裏是PHP代碼:

$client = new SoapClient('http://www.hotelscombined.com/api/LiveRates.asmx?WSDL'); 

$client->__soapCall('HotelSearch', 
    array(
     array('request' => 
      array(
       'ApiKey' => 'THE_API_KEY_GOES_HERE', // note that in the actual code I put the API key in... 
       'UserID' => session_id(), 
       'UserAgent' => $_SERVER['HTTP_USER_AGENT'], 
       'UserIPAddress' => $_SERVER['REMOTE_ADDR'], 
       'HotelID' => '50563', 
       'Checkin' => '07/02/2009', 
       'Checkout' => '07/03/2009', 
       'Guests' => '2', 
       'Rooms' => '1', 
       'LanguageCode' => 'en', 
       'DisplayCurrency' => 'usd', 
       'TimeOutInSeconds' => '90' 
      ) 
     ) 
    ) 
); 

回答

4

第一步是創建一個代理。使用Visual Studio中的Add Service Reference對話框並提供WSDL地址:http://www.hotelscombined.com/api/LiveRates.asmx?WSDL

第二步是調用服務:

using (var client = new LiveRatesSoapClient()) 
{ 
    var response = client.HotelSearch(new HotelSearchRequest 
    { 
     ApiKey = "THE_API_KEY_GOES_HERE", 
     Checkin = new DateTime(2009, 7, 2), 
     Checkout = new DateTime(2009, 7, 3), 
     DisplayCurrency = "usd", 
     Guests = 2, 
     HotelID = 50563, 
     LanguageCode = "en", 
     Rooms = 1, 
     TimeOutInSeconds = 90, 
     UserAgent = "???", 
     UserID = "???", 
     UserIPAddress = "???" 
    }); 
} 

注意的是,根據WSDL某些屬性名稱可能比我在我的示例中提供的那些,因爲我不知道WSDL,但智能感知應不同幫你。

有一個不錯的tutorial你可能會讀。

+0

@Darin - 感謝這對我來說是一個偉大的一步。我遇到了麻煩,儘管你的線特別是'LiveRatesSoapClient()'類,它應該在我添加服務引用後自動在那裏嗎?因爲VS似乎不知道我在說什麼 – 2010-03-30 20:38:16

+0

您需要添加正確的使用。將光標放置在「LiveRatesSoapClient」類上,您應該在該單詞的右下角看到一個小紅框,然後單擊它或Shift + Alt + F10並導入正確的使用指令。我會建議你在嘗試更高級的東西之前閱讀一些關於.NET的初學者教程。 – 2010-03-30 20:45:17