我将 .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)