4

我将 .NET HttpClient for PCL (2.2.15) 用于跨 Windows Phone 8、Windows 8 和 .NET 4.5 的通用库。但是,我没有看到将 cookie 应用于请求。

我正在使用以下代码设置 HttpClient 和 HttpClientHandler 。HttpClient 是包装类的一个属性。

CookieContainer = new CookieContainer();

var handler = new HttpClientHandler
{
    AllowAutoRedirect = true,
    CookieContainer = CookieContainer,
    Credentials = client.CredentialCache,
    UseCookies = true,
    AutomaticDecompression = 
          DecompressionMethods.Deflate | DecompressionMethods.GZip
};

HttpClient = new HttpClient(handler, false);

正在使用以下方式发送请求。

var response = await HttpClient.SendAsync(httpRequestMessage);

在 Debug 中单步执行时,我能够窥视处理程序上的 CookieContainer,并且能够看到我正在使用预期 cookie 处理的域的 CookieContainer。

cookie 具有以下值:

  • 路径 = '/'
  • 域 = '.staging3.api.com'
  • 值 = [authentication_id]
  • 名称 = 'API_AuthId'

后面的请求大致是:https://staging3.api.com/api/v3/Items

我也尝试过自己设置 cookie,但CookieContainer.GetCookieHeader(requestUri)返回一个空字符串。

附加信息:

如果我将 requestUri 修改为https://www.staging3.api.com/api/v3/Items我可以从中获取 cookie 标头CookieContainer.GetCookieHeader(requestUri)

4

0 回答 0