【问题标题】:UWP WebRequest Replacement HttpClient Cookie?UWP WebRequest 替换 HttpClient Cookie?
【发布时间】:2016-03-27 23:52:27
【问题描述】:

因为我要么太转储而无法找到正确的答案,要么根本不存在......我如何用 HttpClient“替换”正确替换“过时”的 WebRequest?

在 WebRequest 中,当网页返回部分 JSON cookie 时,我倾向于序列化和分析实际 cookie ......但是......我仍然没有找到从frking HttpClient ......还有......每个谷歌请求都会让我找到 20000000 年前的答案或过时的文档(+ 一些 upToDate 文档,它们都只是引用“GET”请求而不涉及任何 cookie -.-*))

如果有人能引导我走向正确的道路,我会很友好...... 谢谢

问候 X39

Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient();
client.DefaultRequestHeaders.UserAgent.TryParseAdd(app.Settings.UserAgent);
var response = await client.PostAsync(new Uri(app.Settings.Pr0grammUrl.Api + "user/login"), new Windows.Web.Http.HttpStringContent(postDataBuilder.ToString()));

【问题讨论】:

    标签: cookies win-universal-app


    【解决方案1】:

    默认情况下,HttpClient 通过默认的HttpBaseProtocolFilter 自行处理 cookie。您可以通过HttpCookieManager 类的GetCookies 方法获取与URI 关联的cookie:

    获取包含 HttpCookie 实例的 HttpCookieCollection 与特定 URI 相关联。

    using (var protocolFilter = new HttpBaseProtocolFilter()) {
        var cookieManager = protocolFilter.CookieManager;
        var cookies = cookieManager.GetCookies(uri);
        foreach (var cookie in cookies) {
           // Here is each cookie
        }
    }
    

    您还应该能够通过 HTTP 请求和响应标头设置/获取 cookie。要禁止 HttpClient 自己处理 cookie,请创建一个 HttpBaseProtocolFilter 实例并将 CookieUsageBehavior 设置为 HttpCookieUsageBehavior.NoCookies:

    NoCookies:不自动处理 cookie。

    // Create http filter
    httpFilter = new HttpBaseProtocolFilter();
    httpFilter.CookieUsageBehavior = HttpCookieUsageBehavior.NoCookies;
    
    // Create http client
    httpClient = new HttpClient(httpFilter);
    
    // Handle cookies through HTTP headers
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多