【发布时间】:2014-01-05 19:07:48
【问题描述】:
我对本地主机服务器的请求之一有问题。
为了进行身份验证,我需要两个 cookie,一个来自 sendReqForToken() 方法,一个来自 sendLoginReq(string login, string pass)。
作为响应,我从 sendLoginReq 获得 cookie,但不是从 sendReqForToken()。
我不知道为什么一个请求有一个 cookie,第二个请求没有。
有趣的是,我从 sendReqForToken() 方法中得到了正确的令牌(响应内容是正确的),但响应头中没有任何 cookie。
这是 sendReqForToken() 方法体:
public void sendReqForToken()
{
string adres = Globals.TOKEN_URL;
RestRequest request = new RestRequest(adres, Method.GET);
var client = new RestClient();
client.CookieContainer = new CookieContainer();
client.ExecuteAsync(request, (response) =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
var tokenValue = JsonConvert.DeserializeObject<Token.RootObject>(response.Content);
DataManager.Instance.authToken = tokenValue.authenticity_token;
if (response.Cookies.Count > 0)
{
var cookie = response.Cookies.FirstOrDefault();
DataManager.Instance.cookieJar.Add(new Uri(Globals.TOKEN_URL), new Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain));
}
}
else
{
}
});
}
response.Cookies.Count 总是等于 0。response.cookies 属性总是等于 null。
这是 sendLoginReq 方法体:
public void sendLoginReq(string login, string pass)
{
login = "admin";
pass = "admin";
string adres = Globals.LOGIN_URL;
RestRequest request = new RestRequest(adres, Method.POST);
var client = new RestClient();
request.RequestFormat = DataFormat.Json;
try
{
request.AddBody(new
{
authenticity_token = DataManager.Instance.authToken,
commit = "Login",
utf8 = true,
user_session = new
{
email = login,
password = pass
}
});
}
catch
{
}
client.ExecuteAsync(request, (response) =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
if (response.StatusCode == HttpStatusCode.OK)
{
var cookie = response.Cookies.FirstOrDefault();
DataManager.Instance.cookieJar.Add(new Uri(Globals.LOGIN_URL), new Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain));
}
}
else
{
}
});
}
在第二种方法中,我得到了正确的 cookie。
非常感谢您的任何想法。
【问题讨论】:
标签: c# windows-phone-7 cookies restsharp