首页 > 其他分享 >保持使用全局 HttpClient,但确保不同请求的 HttpRequestMessage 独立

保持使用全局 HttpClient,但确保不同请求的 HttpRequestMessage 独立

时间:2024-09-13 15:13:18浏览次数:1  
标签:HttpRequestMessage request site Add var 全局 HttpClient

保持使用全局 HttpClient,但确保不同请求的 HttpRequestMessage 独立
这是推荐的最佳实践,因为 HttpClient 是设计为可重用的,你可以使用独立的 HttpRequestMessage 来确保每个请求有独立的请求头,而不影响其他请求。

 

        private static readonly HttpClient client = new HttpClient();
        
           var str = JsonConvert.SerializeObject(vo);
   var content = new StringContent(str,
       Encoding.UTF8, "application/json");

   using (var request = new HttpRequestMessage(HttpMethod.Post, site.Url))
   {
       request.Content = content;

       request.Headers.Add("appUserKey", appUserKey);
       request.Headers.Add("nonce", nonce);
       request.Headers.Add("timestamp", timestampStr);
       request.Headers.Add("sign", signature);

       ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
       LogHelper.Info($"{DateTime.Now}: PostAsync {site.Name}({site.Url})");
       var response = await client.SendAsync(request);
       if (response.IsSuccessStatusCode)
       {
           LogHelper.Info($"{DateTime.Now}:  推送数接口返回 {site.Name}({site.Url})  ({await response.Content.ReadAsStringAsync()})");
       }
       else
       {
           LogHelper.Info($"{DateTime.Now}:  推送数据出错 {site.Name}({site.Url}) , 状态码: {response.StatusCode}");
       }
   }

 

标签:HttpRequestMessage,request,site,Add,var,全局,HttpClient
From: https://www.cnblogs.com/0banana0/p/18412237

相关文章

  • HttpClient 和 HttpGet 都设置了,setConnectTimeout 和 setReadTimeout/setSocketTimeo
    在使用ApacheHttpClient时,如果你分别在HttpClient和HttpGet(或其他请求对象)上都设置了setConnectTimeout和setReadTimeout(也叫setSocketTimeout),那么最终生效的配置是HttpGet(或请求对象)的配置优先,即请求对象上的超时设置会覆盖全局HttpClient的设置。具体规则说明:H......
  • 关于node安装的全局js库,提示‘not found’
    1.NODE_PATH环境变量未设置在某些系统或环境下,Node.js无法自动找到全局安装的模块,尤其是当NODE_PATH没有正确设置时。解决方案:你可以尝试手动设置NODE_PATH,让Node.js能够找到全局安装的模块。运行以下命令:exportNODE_PATH=$(npmroot-g)你也可以将这条命令......
  • 全局异常处理器
    GlobalExceptionHandler类packagecom.example.exception;importcom.example.common.Result;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.web.bind.annotation.ControllerAdvice;importorg.springframework.web.bind.annotati......
  • Vue中的全局组件
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • java学习之HttpClient忽略安全证书(SSLContext)
    1.我们在写https请求时候,经常会遇见安全证书(SSL)验证失败的情况,如下图。 上图异常就是因为SSL验证失败导致的,常规的做法是忽略证书认证。方法如下:第一步:需要重写认证的证书类 X509ExtendedTrustManager。第二步:创建SSLContext对象。第三步:将SSLContext对象设置到HttpClien......
  • Python 全局变量使用指南
    Python中优雅使用全局变量的指南在Python编程中,全局变量的使用和管理是非常重要的,尤其是在需要共享配置信息、常量或需要在多个模块之间共享数据时。相比其他语言,Python通过模块级别变量、数据类、环境变量等方式为我们提供了多种实现全局变量的途径。以下将详细介绍几......
  • 在WinForm中使用全局异常捕获处理
    在WinForm中使用全局异常捕获处理在WinForm应用程序中,全局异常捕获是确保程序稳定性的关键。通过在Program类的Main方法中设置全局异常处理,可以有效地捕获并处理未预见的异常,从而避免程序崩溃。注册全局异常事件[STAThread]staticvoidMain(){//注册全局异常捕获事件......
  • PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性
    目录前言PointCNN实现细节1.XXX-Conv操作输入输出步骤2.PointCNN网络架构层级卷积分类与分割任务......
  • git设置全局钩子函数检查commit-message
    步骤1、创建一个文件夹保存钩子文件,如"D:\softwares\Git\git-hooks"2、设置全局钩子函数地址:gitconfig--globalcore.hooksPath"D:\softwares\Git\git-hooks"3、编写prepare-commit-msg文件下面的commit-msg只能以[ADD],[MOD],[BUG]开头#!/bin/sh######校验提交信息......
  • 鸿蒙系统(HarmonyOS)全局弹窗实现
    全局弹窗相对于自定义弹窗有以下优点:封装更彻底,一行代码就能调用跟组件耦合度低,只需要传入组件的UIContext对象,不需要跟自定义弹窗一样需要在组件内部实例化CustomDialogController对象全局弹窗是鸿蒙在API12增加的,PromptAction对象增加了openCustomDialog方法。代码实现......