C# Windows Phone 8.1上使用HttpClient的Cookie

C# Windows Phone 8.1上使用HttpClient的Cookie,c#,cookies,httpclient,windows-phone-8.1,C#,Cookies,Httpclient,Windows Phone 8.1,我正在使用System.Net.Http中的HttpClient,但在处理cookie时遇到问题。我已经通过其他帖子解释了如何使用HttpClient设置cookies。我为HttpClientHandler.CookieHandler创建了一个CookieContainer,并将此容器用于cookies。初始化时,其值明显为0,在执行PostAsync后,CookieContainer包含一个cookie。我运行一个foreach循环来打印值,然后得到一个cookie的值。这一切似乎都在正常运

我正在使用System.Net.Http中的
HttpClient
,但在处理cookie时遇到问题。我已经通过其他帖子解释了如何使用
HttpClient设置cookies。
我为
HttpClientHandler.CookieHandler
创建了一个
CookieContainer
,并将此容器用于cookies。初始化时,其值明显为0,在执行
PostAsync
后,
CookieContainer
包含一个cookie。我运行一个
foreach
循环来打印值,然后得到一个cookie的值。这一切似乎都在正常运转

问题是尽管我似乎在接受cookies,但网站会将我重定向到一个页面,通知我不接受cookies。我已经使用浏览器进行了检查(使其不接受cookies),这是我使用
HttpClient
得到的确切结果

我的代码的总体功能是为登录名提供值,并尝试发布这些值。登录似乎按预期工作,尽管它重定向我,告诉我我不接受cookie-即使我的
CookieContainer
确实包含cookie。我不确定哪里出了问题,但网站似乎看不到我实际上在接受cookies。我已尝试设置
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
,但我已经花了几天时间阅读了有关它的文章,希望答案不太明显。非常感谢-非常感谢您的帮助。

我通过使用chrome跟踪网站解决了这个问题。我意识到登录页面在我第一次进入页面时给了我2个cookie,在我登录时给了我1个cookie。场景可以这样描述

  • 获取登录页面-2 cookies
  • 登录后页面-1 cookie
问题是我一开始就为登录做了一个
httpClient.PostAsync
。登录时,我错过了前两个cookies

我在发帖之前通过执行httpClient.GetAsync解决了这个问题,然后我得到了所需的totalt3 cookies

HttpResponseMessage responseGet = await httpClient.GetAsync(User.School.Url);
HttpResponseMessage responsePost = await httpClient.PostAsync(User.School.Url, new FormUrlEncodedContent(values));
这个问题可能是因为我对饼干知识的缺乏。如果网站回复说你缺少cookies,那么你很可能是,确保你正确跟踪了所有流量。希望这能对其他人有所帮助:)