C# 纯粹从aspx页面使用Web服务
我的公司在其中一台it服务器上托管了一个SOAP web服务,需要使用此web服务直接从我正在开发的web前端创建“任务”。我可以访问WSDL webservice文档说明我必须: 1。调用LoginSI,提供用于身份验证的用户名和密码, 因此,接收SessionId 2。对WebService执行任意数量的方法调用,传入SessionId 3。调用LogoutSI,传入SessionId。这将放弃之前的会话 通过LoginSI建立 这听起来很合理,我已设法调用LoginSI Web服务并使用以下简单HTML表单检索SessionID:C# 纯粹从aspx页面使用Web服务,c#,asp.net,html,web-services,C#,Asp.net,Html,Web Services,我的公司在其中一台it服务器上托管了一个SOAP web服务,需要使用此web服务直接从我正在开发的web前端创建“任务”。我可以访问WSDL webservice文档说明我必须: 1。调用LoginSI,提供用于身份验证的用户名和密码, 因此,接收SessionId 2。对WebService执行任意数量的方法调用,传入SessionId 3。调用LogoutSI,传入SessionId。这将放弃之前的会话 通过LoginSI建立 这听起来很合理,我已设法调用LoginSI Web服务并使用以
<form action="http://webservice_server/webservice.asmx/LoginSI" method="post">
<p>
Username:<br />
<input type="text" name="username"/>
</p>
<p>
Password:<br />
<input type="password" name="password"/>
</p>
<input type="submit" value="Test login"/>
</form>
用户名:
密码:
到目前为止还不错。下一步是开始执行其他Web服务。然而,我想要的是从同一个页面(最初)完成所有这一切。例如,一旦您成功登录,codebehind将处理webservice响应并获取您的会话ID。然后页面上会出现一些其他选项,随后对webservice的每次调用都将使用会话ID
我不知道如何纯粹从codebehind(或以任何其他方式实现所需行为)使用Web服务。我找到了一些文章,但它们大多提到了向项目添加程序集引用,我认为我无法做到这一点,因为我自己没有编写webservices
有人能告诉我正确的方向吗?您可以通过该选项添加对
WSDL
文件的引用
这将生成一个可以在代码中使用的代理
有关详细信息,请参见MSDN上的此部分(您可能只需跳到
将Web服务作为组件添加即可)。您有两个选项。您可以为需要调用的每个服务添加web引用,如果不可能,您可以考虑使用System.Net.WebClient类调用web服务
本文介绍了如何动态调用web服务:
我将从您提到的关于无法引用Web服务的项目程序集的最后一点开始回答。。。你不必这么做
为了为该web服务创建强类型代理,您只需从web应用程序中使用添加服务引用选项。代理(是一个常规的C#类)是一个soapclient,它将公开所有webservice方法,供您从aspx页面的代码后面访问
现在的挑战是持久化从Web服务返回给您的SessionId,因为您有各种选项、会话、ViewState、QueryString。。。所以你挑吧
当然,另一种可能性是webservice是以RESTful方式实现的,这意味着不存在允许创建强类型代理的wsdl文件。在这种情况下,您可以使用WebClient类手动创建代理和服务方法,例如:
WebClient proxy = new WebClient();
byte[] data = proxy.DownloadDataAsync("RESTful Method Uri");
希望这有帮助。什么样的web服务?休息肥皂?有WSDL吗?@Oded是的,有WSDL。请原谅我的愚蠢,但我如何确定它是否是SOAP/REST?如果它有WSDL,它将是SOAP。