目前,我正在使用ASP.NET Core 2编写一个项目,并且正在尝试从第三方网站获取JSON文件。问题在于该网站需要一些Cookie才能从中检索数据。我在Startup.cs文件中实现了一个键入的HttpClient,如下所示:
services.AddHttpClient<IMyClient, MyClient>().ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
UseCookies = true,
UseDefaultCredentials = true,
CookieContainer = new CookieContainer()
};
});
Run Code Online (Sandbox Code Playgroud)
有什么方法可以访问CookieContainer来使用CookieContainer.GetCookies()方法,以便可以从HttpResponseMessage复制各种Cookie,例如会话Cookie和一些验证令牌?
抱歉,如果我做错了,这是我的第一篇文章。
编辑
通过在请求管道中添加HttpMessageHandler使其工作
services.AddHttpClient<IMyHttpClient, MyHttpClient>()
.AddHttpMessageHandler<MyMessageHandler>();
Run Code Online (Sandbox Code Playgroud)
并在HttpMessageHandler中编辑http标头信息
public class MyMessageHandler : DelegatingHandler
{
private readonly CookieContainer _cookies;
public MyMessageHandler()
{
_cookies = new CookieContainer();
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage message, CancellationToken cancellationToken)
{
try
{
if (_cookies.Count == 0 && message.RequestUri.Host.Contains("example.com"))
{
// Simulate the Request
var getCookieMesssage = new HttpRequestMessage()
{
RequestUri = new …Run Code Online (Sandbox Code Playgroud) c# cookies dotnet-httpclient asp.net-core-2.1 httpclientfactory