在Windows Phone 7应用程序中未使用RestSharp设置Cookie

时间:2013-08-17 14:29:24

标签: windows-phone-7 windows-phone-8 restsharp

今天我尝试登录包含身份验证表格的网页。

我在Windows Phone 7上使用RestSharp,我几乎尝试了所有东西,但它没有用。

在台式计算机上的浏览器中,当我使用登录页面(http://myanimelist.net/login.php)并输入我的有效凭据时,我将被重定向到面板页面(http://myanimelist.net/panel.php

在Windows Phone 7(和8)上,当我尝试使用RestSharp来验证自己时,我被重定向到面板页面,但出现以下错误:

  

错误:您必须先登录才能看到此页面。

事实上我没有通过身份验证,我没有权利查看面板页面。

我在WPF应用程序中尝试了相同的操作,并且在那里工作。

在我的WPF应用程序中,我有以下代码:

var client = new RestSharp.RestClient();

client.BaseUrl = "http://myanimelist.net/login.php";

client.Authenticator = new SimpleAuthenticator("username", "mylogin", "password", "mypassword");

client.CookieContainer = new CookieContainer();

var request = new RestRequest(Method.POST);

var response = client.Execute(request);

属性“response.Content”将包含带有一些信息的页面和带有登录信息的欢迎消息。这意味着我已通过身份验证。

但是...

使用Windows Phone 7中的以下代码,属性“response.Content”将包含一个包含一些信息的页面,其中包含以下消息:

  

错误:您必须先登录才能看到此页

以下是使用的WP7代码:

var client = new RestSharp.RestClient();

client.BaseUrl = "http://myanimelist.net/login.php";

client.Authenticator = new SimpleAuthenticator("username", "mylogin", "password", "mypassword");

client.CookieContainer = new CookieContainer();

var myRequest = new RestRequest(Method.POST);


client.ExecuteAsync(myRequest, response =>
{
    var t = response.Content;
});

我错过了什么吗? WP7上的RestSharp和WPF应用程序之间有区别吗?

我使用Fiddler检查发生了什么,我可以看到在WP7上从未设置过cookie(在WPF应用程序中设置了cookie)。

修改

我发现了一些有趣的东西,当我收到回复时,我可以在Fiddler中看到在WPF应用程序和WP7应用程序中设置了cookie。

所以我尝试在我的WP7应用程序中添加cookie,然后才发出请求并且它有效。

我添加了我在Fiddler中可以看到的值,但我找不到使用RestSharp检索这些值的方法。

以下是我在执行请求之前尝试添加的内容:

myRequest.AddParameter("A", "theFirstValue", ParameterType.Cookie);
myRequest.AddParameter("B", "theSecondValue", ParameterType.Cookie);

1 个答案:

答案 0 :(得分:1)

事实上我找到了一种方法。

在回复中我在标题(Set-cookie)中有cookie。我从标题中提取cookie并将其添加到我需要cookie的下一个请求中。