2012-07-24 37 views
2

如果有人能幫我解決我的問題,我會非常感激。如何從RestResponse保存cookie並將它們傳遞給下一個RestRequest?

我寫了一個使用RestSharp庫與RightScale API交互的C#代碼。

該代碼可以正常使用一組用戶名和密碼,但是當我將用戶名和密碼替換爲新的用戶名和密碼時,我會得到響應「基本認證已被棄用,而不是登錄,請'登錄'以獲取一個會議,並通過會議回來採取進一步的行動。「

任何人都可以引導我在正確的方向。我發現代碼僅適用於一組證書而不適用於任何其他用戶名和密碼,這真的很奇怪。

如何保存cookie並將它們作爲參考在下一次restrequest中傳遞?

+0

這應該是RESTful的,因爲它爲一個用戶帳戶意味着我可以使用RightScale的查詢一個用戶帳戶的API。但是,如果只更改代碼中的用戶名和密碼變量,它不允許我越過登錄事物。可能我需要保存餅乾,但我不知道如何做到這一點。 – user1548923 2012-07-24 14:35:14

+2

對不起,如果你需要保存一個會話cookie,它的定義不是RESTful。但無論如何,看看https://github.com/restsharp/RestSharp/wiki/Cookies – cHao 2012-07-24 14:55:35

+0

如何在這種情況下使用cookiecontainer,以便它得到保存,我可以用它來請求後續請求。 var request = new RestRequest(); request.Resource =「login」; var client = new RestClient(); client.BaseUrl = _baseUrl; client.Authenticator = new HttpBasicAuthenticator(_username,_password); var myparm = new RestSharp.Parameter {Name =「X-API-VERSION」,Value =「1.0」,Type = ParameterType.HttpHeader}; request.AddParameter(myparm); var response = client.Execute(request); – user1548923 2012-07-24 15:12:57

回答

2

RestSharp 102.4+支持對來自同一個IRestClient的所有請求使用共享的System.Net.CookieContainer。通過這樣做,任何在響應中設置或未設置的cookie都將用於隨後的請求。爲了使用一個共享的CookieContainer,簡單地設置您的RESTClient實現實例的屬性在使用它之前:

var client = new RestClient("http://server/"); 
client.CookieContainer = new System.Net.CookieContainer(); 

來源:https://github.com/restsharp/RestSharp/wiki/Cookies

相關問題