首页 > 解决方案 > 获取 HTTP 标头值

问题描述

我想从特定的头文件中获取 HTTP 头值(我不知道它们叫什么)。
对于头文件,我的意思是:https ://imgur.com/a/bkBMLaa 。我如何从中读取状态码?我试图获取此代码,但它返回了 OK(200) 而用户名甚至不存在

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace HttpClientEx
{
    class Program
    {
        static async Task Main(string[] args)
        {
            using var client = new HttpClient();
            var content = await client.GetStringAsync("https//tiktok.com/@euiwfhnneuwih");

            Console.WriteLine(content);
        }
    }
}

标签: c#.net-core

解决方案


由于您不知道标头是什么,您可以通过调试器运行代码并查看我在此处提供的示例中的值。一旦你看到标题被称为什么,你就可以在你的代码中检索它们,就像我在下面做的那样。您也可以从响应中获取状态代码。

您可以像这样从客户端本身设置和获取默认标头

    var client = new HttpClient(); 

    // Set headers like this
    client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1");

    // this gives you the string value of the header
    var requestHeader = client.DefaultRequestHeaders.Accept.ToString(); 
    // this gives you an IEnumerable<string> of headers
    var requestHeader2 = client.DefaultRequestHeaders.GetValues("Accept");

    // You can retrieve the header like this.
    var acceptHeader = client.DefaultRequestHeaders.Accept.ToString();

要获取它们,您将执行相同的操作,但从 response.Header 获取它们。

    var response = client.GetAsync("https://www.google.com").Result;
    var cacheControlHeader = response.Headers.CacheControl.ToString();
    var cacheControlHeader2 = response.Headers.GetValues("Cache-Control");

    // The status code can be retrieved like this
    var statusCode = response.StatusCode;

推荐阅读