【发布时间】:2014-08-25 01:44:57
【问题描述】:
我在theSystem.Net.Http 中使用HttpClient,但在处理cookie 时遇到问题。我已经通过其他帖子解释了如何使用HttpClient. 设置cookie 我为HttpClientHandler.CookieHandler 创建了一个CookieContainer 并将此容器用于cookie。初始化时,它的值显然是0,并且在制作PostAsync之后,CookieContainer包含一个cookie。我通过foreach 循环来打印值,然后我得到了一个cookie 的值。这一切似乎都在正常工作。
问题是,即使看起来我正在接受 cookie,网站也会将我重定向到一个页面,通知我我不接受 cookie。我已经用浏览器进行了检查(使其不接受 cookie),这是我使用HttpClient 得到的确切结果。
我的代码的整体功能是为登录提供值并尝试发布这些值。尽管我的 CookieContainer 确实包含 cookie,但它重定向我告诉我不接受 cookie,但登录似乎按预期工作。我不确定这是哪里出了问题,但网站似乎看不到我实际上在接受 cookie。我试过设置httpClientHandler.UseCookies = true;,但没有任何区别。我试图访问的网站是我大学的成绩阅读系统,我无法访问它的任何编码。
我的代码如下所示:
{
var httpClientHandler = new HttpClientHandler();
//Creating cookiecontainer and printing Count for debug purpose
var cookieContainer = new CookieContainer();
Debug.WriteLine("Cookies " + cookieContainer.Count);
httpClientHandler.CookieContainer = cookieContainer;
var httpClient = new HttpClient(httpClientHandler);
HttpResponseMessage response = await httpClient.PostAsync(url, new FormUrlEncodedContent(values));
Debug.WriteLine("Response code" + response.StatusCode);
Debug.WriteLine("Response: " + response.IsSuccessStatusCode);
response.EnsureSuccessStatusCode();
string content = await response.Content.ReadAsStringAsync();
//Print amount of cookies after PostAsync - Should contain cookie now
Debug.WriteLine("Cookies " + cookieContainer.Count);
//Printing the values of the added cookies
foreach (Cookie cookie in cookieContainer.GetCookies(new Uri(url)))
{
Debug.WriteLine("Cookie contains: " + cookie.Value.ToString());
}
}
这是我的第一个 Windows Phone 应用程序,也是我第一次使用HttpClient,但我已经用了几天时间阅读它,所以希望答案不是很明显。非常感谢 - 非常感谢您的帮助。
【问题讨论】:
标签: c# cookies httpclient windows-phone-8.1