首页 > 编程语言 >C# .NetCore HttpClient 标题名称 Content-Type、content-md5、Accept误用 确保请求头与HttpRequestMessage一起使用

C# .NetCore HttpClient 标题名称 Content-Type、content-md5、Accept误用 确保请求头与HttpRequestMessage一起使用

时间:2025-01-11 15:59:32浏览次数:3  
标签:Content 请求 NetCore C# Type Accept content HttpContent MD5

异常消息:

        异常1、Misused header name, 'Content-Type'. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects

        大概意思:标题名称“Content-Type”误用。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用以及内容头与HttpContent对象一起使用 

Content-Type不能添加HttpClient默认请求头中,需要使用HttpContent与HttpResponseMessage配合完成请求头,删除异常代码,改写代码如下:

再次调试运行代码即可解决上面的异常。 

        异常2、Misused header name, 'content-md5'. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.” 

        大概意思:标题名称“content-md5”误用。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用以及内容头与HttpContent对象一起使用。” 

修改代码与上面问题基本一致:

示例:httpContent.Headers.Add("content-md5", "adminsnsdfgfv"); 

修改代码后,在调试运行即可解决上面的异常。

        异常3、Misused header name, 'Accept'. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects

        大概意思:标题名称“Accept”被误用。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用以及内容头与HttpContent对象一起使用 

上面这个错误,需要将Accept设置到HttpClient默认请求头中,如下图:

代码:

client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));

修改后调试程序一切正常。 

请求头一些设置说明描述: 

        在使用 `HttpClient` 进行 HTTP 请求时,设置 `Content-Type`、`Accept` 和 `Content-MD5` 这三个头部虽然都是与内容处理相关的,但它们的用法和目的有所不同。这些头部在请求中执行不同的角色,它们的设置位置和方式也不同。

1. Content-Type

    定义: `Content-Type` 头部用于指定请求体(如 POST、PUT 等)的媒体类型。它告诉服务器内容的格式是什么,以便服务器能正确解析请求体。

    设置位置: `Content-Type` 是与 `HttpContent` 相关的,可以在创建 `HttpContent` 时设置。
  
    var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

    示例:
        JSON 格式: `application/json`
        表单数据: `application/x-www-form-urlencoded`
        XML 格式: `application/xml`

2. Accept

    定义: `Accept` 头部用于指定客户端能够处理的响应内容的媒体类型。它告诉服务器客户端希望接收哪种格式的响应。

    设置位置: `Accept` 头部是属于请求的 HTTP 头部之一,设置在 `HttpClient.DefaultRequestHeaders` 中。

        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

示例:

    客户端希望接收 JSON 响应: `application/json`
    客户端希望接收 XML 响应: `application/xml`

3.Content-MD5

    定义: `Content-MD5` 头部用于提供请求体的 MD5 摘要,以说明请求体的完整性和准确性。这可以帮助接收方验证请求体在传输过程中是否未被修改。

    设置位置: `Content-MD5` 通常不是由 `HttpContent` 自动设置的,而是需要手动计算和设置。该头部需要在请求的 `HttpRequestMessage` 中设置。

        var md5 = MD5.Create();
        var contentBytes = Encoding.UTF8.GetBytes(jsonData);
        byte[] hash = md5.ComputeHash(contentBytes);
        string md5Base64 = Convert.ToBase64String(hash);
        request.Headers.Add("Content-MD5", md5Base64);

示例:

    发送请求体的 MD5 校验和以确保数据未被篡改。

解释说明:

`Content-Type`: 指定请求体的格式 。由 `HttpContent` 设置。

`Accept`: 指定客户端希望接收的响应格式。由 `HttpClient` 的请求头设置。

`Content-MD5`: 提供请求体的 MD5 校验和以确保请求内容的完整性。通常手动计算并以建筑样式添加到请求头。

在使用 `HttpClient` 时,根据需要选择合适的头部设置和处理方式,以确保 API 调用的正确性和数据完整性。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

标签:Content,请求,NetCore,C#,Type,Accept,content,HttpContent,MD5
From: https://blog.csdn.net/hefeng_aspnet/article/details/144908170

相关文章

  • 新模型设计:Hybrid Quantum-Classical Neural Network (HQCNN) for Image Classificati
    新模型设计:HybridQuantum-ClassicalNeuralNetwork(HQCNN)forImageClassification目录新模型设计:HybridQuantum-ClassicalNeuralNetwork(HQCNN)forImageClassification引言1.HybridQuantum-ClassicalNeuralNetwork简介2.HybridQuantum-Classi......
  • 【Java编程】Java 本地缓存实现:Guava Cache、Caffeine、Ehcache 和 Spring Cache
    一、引言二、GuavaCache三、Caffeine四、Ehcache五、SpringCache六、总结一、引言在现代应用程序开发中,缓存是提高性能和响应速度的关键技术之一。Java提供了多种本地缓存解决方案,每种方案都有其特点和适用场景。本文将介绍四种常见的Java本地缓存实现:GuavaCache、C......
  • ciscn_2019_n_8 1
    checksec一下能发现开了很多保护,吓人一跳,但其实我们分析一下发现只要var[13]为17就可以了if(*(_QWORD*)&var[13])#判断var[13]开始的8字节(_QWORD表示64位,即8字节)内存区域是否非零。*(_QWORD*)&var[13]是将var[13]的地址转换为_QWORD(64位整数)指针,然后解引用得到该内存区域的......
  • Anaconda Go2 EDU ubuntu
     (base)bim@bim-Smart-Client:~/Anaconda$(base)bim@bim-Smart-Client:~/Anaconda$(base)bim@bim-Smart-Client:~/Anaconda$condacreate-nwind_2025python=3.8 Channels:-defaultsPlatform:linux-64Collectingpackagemetadata(repodata.json):don......
  • Text-Switch的练习1
    Text-Switch的练习1键盘录入一个从一到七的数字表示星期星期一到星期五是工作日星期六和星期日是休息日Scannerxq=newScanner(System.in);System.out.println("请输入一个一到七之间的数字");intweek=xq.nextInt();switch(week){c......
  • CSPJ模拟赛7
    子集最大和解法对于60%的数据,n比较小,我们可以搜索,对于一个数而言,有两种选择,一种是选择,另一种是不选择,用这个方法搜索就可以了对于100%的数据而言,\(n\leq1000\),肯定不能搜索了,但是,题目里还有一个条件没有使用,就是\(a_{i-1}+a_{i-2}\leqa_i\),感觉这个和斐波那契数列有关,......
  • Omnissa Dynamic Environment Manager 2412 - 个性化动态 Windows 桌面环境管理
    OmnissaDynamicEnvironmentManager2412-个性化动态Windows桌面环境管理Simplifymanagementofuserprofiles,environmentsettings,andpoliciesacrossdesktopsandapps.请访问原文链接:https://sysin.org/blog/omnissa-dynamic-environment-manager/查看最新版......
  • 安装Maven,配置环境变量,修改本地仓库,idea中引入依赖报错-已经解决(是我一个cainiao改bu
    安装Maven,配置环境变量,修改本地仓库后idea中引入依赖报错1.安装Maven1.1下载Maven记得去官网下载 :  https://maven.apache.org/download.cgi二进制文件,下载即安装1.2Maven安装下载完毕之后可以剪切到自己想要安装的目录,然后解压即可。(下载解压即安装)2.配置环境......
  • IPOIB驱动中RSS和TSS相关功能的实现:以ipoib_main_rss.c为例
    一、引言在现代网络通信领域,InfiniBandoverEthernet(IPoIB)驱动的高效性对于网络性能有着至关重要的影响。其中,接收方扩展(RSS)和传输方扩展(TSS)是提升网络性能的关键技术。ipoib_main_rss.c文件作为IPoIB驱动中处理RSS和TSS的重要源码文件,蕴含着丰富的功能和复杂的......
  • 在LangChain中使用Hazy Research生态系统
    在AI技术不断发展的今天,HazyResearch提供了一套强大的工具生态系统,能够帮助开发者在语言模型和数据处理中获得更高的效率。今天,我们将探讨如何在LangChain中集成和使用HazyResearch的生态系统,实现安装和配置,并了解如何利用具体的HazyResearch封装器来提升应用的功能。技......