【问题标题】:How to retrieve Cookies from HttpResponseMessage如何从 HttpResponseMessage 中检索 Cookie
【发布时间】:2019-11-25 08:56:48
【问题描述】:

我在 post 请求中发送表单数据,我知道该请求返回 cookie,但我的 cookie 变量返回为空

如您所见,我已尝试使用 GetCookies,但我想知道是否可以在收到 200 响应时从 PostAsync 响应中过滤掉 cookie

CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;

HttpClient client = new HttpClient(handler);
HttpContent content = new StringContent(JsonConvert.SerializeObject(formVals), Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(targetURI.AbsoluteUri , content);

IEnumerable<Cookie> responseCookies = cookies.GetCookies(targetURI).Cast<Cookie>()
foreach (Cookie cookie in responseCookies)
   result.Add(cookie);

我预计 2 个 cookie 会返回并存储在我的 responseCookies 容器中

【问题讨论】:

    标签: c# cookies .net-core


    【解决方案1】:

    你们知道,问题是我没有对表单数据进行编码。 将内容更改为下面的行。

    var content = new FormUrlEncodedContent(formVals);
    

    【讨论】:

      【解决方案2】:

      您的问题中有一些不清楚的方面:您的cookies 变量来自哪里,您的handler 变量来自哪里?这些细节对于回答问题很重要。

      我能想到您的代码中有 2 个可能的错误部分。首先,您应该将CookieContainer 附加到您的处理程序:

      var cookies = new CookieContainer();
      var handler = new HttpClientHandler() { CookieContainer = cookies };
      var client = new HttpClient(handler);
      var content = new StringContent(JsonConvert.SerializeObject(formVals), Encoding.UTF8, "application/json");
      var response = await client.PostAsync(targetURI.AbsoluteUri, content);
      
      IEnumerable<Cookie> responseCookies = cookies.GetCookies(targetURI).Cast<Cookie>()
      foreach (Cookie cookie in responseCookies)
         result.Add(cookie);
      

      其次(假设您的 cookieshandler 变量以这种方式初始化),您可能需要获取正确基地址 (Uri.Host) 的 cookie:

      IEnumerable<Cookie> responseCookies = cookies.GetCookies(targetURI.Host).Cast<Cookie>()
      

      如果您完全不确定,请与this approach(基于反射的深度检查)确认是否设置了 cookie,以及它们是针对哪个域设置的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-18
        • 2015-05-06
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 2014-03-16
        • 2014-11-15
        相关资源
        最近更新 更多