提问人:Andrew G. Johnson 提问时间:3/31/2010 最后编辑:CommunityAndrew G. Johnson 更新时间:12/20/2011 访问量:895
帮我把这个PHP SOAP代码转换为C#
Help me convert this PHP SOAP code to C#
问:
我正在尝试进行一些 C# SOAP 调用,但似乎无法获得有关如何执行此操作的任何好示例。我读过一个关于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赞
Darin Dimitrov
3/31/2010
#1
第一步是创建代理。使用 Visual Studio 中的“添加服务引用”对话框并提供 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,但 Intellisense 应该对你有所帮助。
您可能会阅读一个不错的教程。
评论
0赞
Andrew G. Johnson
3/31/2010
@Darin - 谢谢,这对我来说是重要的一步。我的问题是你的第一行,特别是类,它应该在我添加服务引用后自动出现吗?因为 VS 似乎不知道我在说什么LiveRatesSoapClient()
0赞
Darin Dimitrov
3/31/2010
您需要添加正确的使用。将光标放在类上,您应该会在单词的右下角看到一个红色小框,然后单击它或 Shift + Alt + F10 并导入正确的 using 指令。我建议您在尝试更高级的东西之前阅读一些有关 .NET 的初学者教程。LiveRatesSoapClient
评论