gpt4 book ai didi

c# - Windows.Web.Http.HttpClient : Receiving cookies and save them

转载 作者:行者123 更新时间:2023-11-30 18:46:00 25 4
gpt4 key购买 nike

我需要一些有关新 Windows.Web.Http.HttpClient 类的帮助。我现在正在编写我的第一个 WP8.1 应用程序,它让我发疯。我正在登录这样的网站:

var values = new Dictionary<string, string>();
values.Add("login_username", _username);
values.Add("login_password", _password);
values.Add("login_lifetime", "36000");

var parameters = new HttpFormUrlEncodedContent(values);
var response = await Forum.Http.PostAsync(new Uri("http://foo.bar.xyz"), parameters);

var buffer = await response.Content.ReadAsBufferAsync();
byte[] byteArray = buffer.ToArray();
string content = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

if (content.Contains("Wrong password/user name"))
{
return false;
}

return true;

这工作得很好。我的 HttpClient 是一个静态字段,如下所示:

public static HttpBaseProtocolFilter Filter = new HttpBaseProtocolFilter();
public static HttpClient Http = new HttpClient(Filter);

登录工作正常,但它不保存网站在登录后发送的 cookie。我如何保存它们并在每次 GetAsync() 时将它们发送到网站?

最佳答案

您可以使用 HttpClientHandler 而不是 HttpBaseProtocolFilter。如果您必须使用 HttpBaseProtocolFilter,那么 HttpCookieManager 类型的只读 CookieManager 属性可以帮助您。

这是一个使用 HttpClientHandler 的例子:

public static CookieContainer Cookies = new CookieContainer();
public static HttpClientHandler HttpClientHandler = new HttpClientHandler() { CookieContainer = Cookies };
public static HttpClient Http = new HttpClient(HttpClientHandler);

在您的 PostAsync() 调用返回后,您可以提取 cookie

var uri = new Uri("http://foo.bar.xyz");
var response = await Forum.Http.PostAsync(uri, parameters);
IEnumerable<Cookie> responseCookies = Cookies.GetCookies(uri).Cast<Cookie>();
foreach (Cookie cookie in responseCookies) {
Console.WriteLine(cookie.Name + ": " + cookie.Value);
}

如果您想重新使用初始请求中的 cookie,您可以创建自己的 CookieContainer 并从响应 cookie 中复制 cookie。或者 - 您也可以像这样添加一个硬编码的 cookie:

Cookies.Add(new HttpCookie("Name", "Value") { Domain="http://foo.bar.xyz" });

关于c# - Windows.Web.Http.HttpClient : Receiving cookies and save them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com