2014-07-15 54 views
1

在wpf應用程序中我必須調用一個外部休息服務,該服務返回一個帶有會話ID的cookie。在隨後的所有調用中,我必須在cookie中發送會話ID,否則它不會返回任何數據。在WPF應用程序中讀取cookie

那麼我怎樣才能檢索類後面的wpf代碼的cookie?

CookieContainer cookies = new CookieContainer(); 
HttpClientHandler handler = new HttpClientHandler(); 
handler.CookieContainer = cookies; 

HttpClient client = new HttpClient(handler); 
var domain = EndPoint; 
HttpResponseMessage response2 = client.PostAsync(domain, new StringContent(parameters)).Result; 

Uri uri = new Uri(domain); 
IEnumerable<Cookie> responseCookies = cookies.GetCookies(uri).Cast<Cookie>(); 
var cookieWithId = responseCookies.Single(o => o.Name == "JESSSIONID"); 

其中端點有http://mydomain.com:38080/workshop/和參數有休息/登錄?用戶名= USR &密碼= PWD

+0

檢查:http://www.codeproject.com/Articles/190806/Send-Cookies-When-Making-WCF-Service-Calls – MJVC

回答

1

下面是關於如何從響應讀取cookies的例子。

CookieContainer cookies = new CookieContainer(); 
HttpClientHandler handler = new HttpClientHandler(); 
handler.CookieContainer = cookies; 

HttpClient client = new HttpClient(handler); 
var domain = "http://yourServiceURL.com"; 
HttpResponseMessage response = client.GetAsync(domain).Result; 

Uri uri = new Uri(domain); 
IEnumerable<Cookie> responseCookies = cookies.GetCookies(uri).Cast<Cookie>(); 
var cookieWithId = responseCookies.Single(o => o.Name == "SessionId"); 
+0

我試過,但沒有收到的cookie。儘管我可以看到cookie在從REST客戶端(即PostMan)發出請求時返回。也嘗試了http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer.aspx中的代碼,但結果相同:( – Haris

+0

@Haris發佈代碼 –

+0

我已編輯帖子以包含代碼我已經使用 – Haris

相關問題