为了账号安全,请及时绑定邮箱和手机立即绑定

从 JObject 创建 HttpRequestHeaders

从 JObject 创建 HttpRequestHeaders

C#
慕工程0101907 2022-07-10 10:24:05
    我为我的桌面软件创建了一个 API,以避免每次我想对 HttpClient 标头进行更改时进行编码和重建,但我不知道如何创建自定义 HttpRequestHeader 列表并将其作为请求标头添加到 HttpClient 中。我正在寻找这样的解决方案:clients.DefaultRequestHeaders = list_of_json_header_values;到目前为止,这是我发出请求的代码:public static string DownloadSource(string link){    try    {        HttpClientHandler hch = new HttpClientHandler();        hch.Proxy = null;        hch.UseProxy = false;        using (HttpClient clients = new HttpClient(hch))        {            //clients.DefaultRequestHeaders = list_of_json_header_values; ???            using (HttpResponseMessage response = clients.GetAsync(link).Result)            {                using (HttpContent content = response.Content)                {                    return content.ReadAsStringAsync().Result;                }            }        }    }    catch (Exception _ex)    {        MessageBox.Show(_ex.ToString());    }}这是我从 JSON 获取标头的方法:var headers_json = "json here";var objects = JObject.Parse(headers_json);foreach (var item in objects["header_settings"]){    //list_of_json_header_values.Add(item.ToString()); ???    Console.WriteLine(item.ToString());}控制台输出:"Cache-Control": "no-cache""User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0""Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""Accept-Language": "en-GB,en;q=0.5"
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您可以制作这样的扩展方法:


public static class HttpClientExtensions

{

    public static void AddHeadersFromJson(this HttpClient client, string json)

    {

        JObject obj = JObject.Parse(json);


        foreach (JProperty prop in obj["header_settings"].Children<JProperty>())

        {

            client.DefaultRequestHeaders.Add(prop.Name, (string)prop.Value);

        }

    }

}

然后你可以这样做:


using (HttpClient client = new HttpClient(hch))

{

    client.AddHeadersFromJson(headers_json);


    ...

}


查看完整回答
反对 回复 2022-07-10
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号