2012-07-24 85 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

相关问题