2012-08-06 157 views
0

我正在开发一个WP应用程序,它使用SOAP客户端在.NET中实现了web服务。我使用“添加服务引用”选项在WP应用程序中实现了SOAP客户端。在SOAP客户端中实现会话

现在的问题是,有两个不同的客户端类,一个用于登录功能,另一个用于所有其他查询。登录工作正常,并返回true或false,没有别的。另一个客户端类用于进行不同的查询,这些查询都可以正常工作并从服务器获取一些数据。在测试后,我观察到响应独立于登录用户(即服务器发送与登录用户无关的相同数据)。因此很显然会话不会被维护,服务器正在发送一些匿名数据。

有人帮助我了解如何在SOAP客户端中维护会话。

注意:我不能问这个Web服务提供商。 :(

+0

你不能保持它作为消费 - 二次服务,应要求一个私人密钥来提供数据 - 显然,你可以从这项服务中索要数据,而不会登录。如果您编写了Web服务,那么您有其他选择。 – 2012-08-06 14:25:26

+0

还有什么其他选择?我的疑问是,维护会话可能有一些选择,我可能会错过它。所以我想知道在SOAP客户端中维护会话的所有可能方式。 – nkchandra 2012-08-06 14:31:58

+1

如果您没有编写它,则没有其他选项,该会话必须在服务器端进行维护。您登录后,会话建立,密钥返回给您,并且在查询需要会话的其他服务时使用该密钥,以便您可以在服务呼叫期间进行身份验证。 – 2012-08-06 14:58:57

回答

2

最后我想通了如何在Windows手机应用程序维护基于Cookie的会话

感谢Mike对他的指导。

所有这些谁想知道关于WP维护会话的方式不同应用程序, 有一个叫CookieContainer类,它有助于保持cookie数据为我们

用法:

首先创建CookieCon的全局实例TAINER类(我在App.xaml.cs创建)

//In App.xaml.cs 
CookieContainer cookieContainer = new CookieContainer(); 

然后将其分配给我们做,从我们的应用程序服务器的每个请求。

MySoapClient client = new MySoapClient(); 
client.CookieContainer = (App.Current as App).cookieContainer; 
client.LoginAsync("username", "password"); 

再次用于该应用

MyOtherSoapClient anotherClient = new MyOtherSoapClient(); 
anotherClient.CookieContainer = (App.Current as App).cookieContainer; 
anotherClient.PostDataAsync("somedata"); 

相同的规则的任何其他请求也适用于正常WebClientHttpWebRequest和类也。

编码快乐:)