2012-08-06 144 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和類也。

編碼快樂:)