今天我尝试登录包含身份验证表格的网页。
我在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);
答案 0 :(得分:1)
事实上我找到了一种方法。
在回复中我在标题(Set-cookie)中有cookie。我从标题中提取cookie并将其添加到我需要cookie的下一个请求中。