RestTemplate请求header过长

调用A系统的时候,发现请求的header的Accept-Charset过长,请求报文如下

既然是Accept-Charset过长,那么就先了解下什么是Accept-Charset

Accept-Charset 请求头用来告知(服务器)客户端可以处理的字符集类型。 借助内容协商机制,服务器可以从诸多备选项中选择一项进行应用, 并使用Content-Type 应答头通知客户端它的选择。浏览器通常不会设置此项值,因为每种内容类型的默认值通常都是正确的,但是发送它会更有利于识别。如果服务器不能提供任何可以匹配的字符集的版本,那么理论上来说应该返回一个 406 (Not Acceptable,不被接受)的错误码。但是为了更好的用户体验,这种方法很少采用,取而代之的是将其忽略。

既然看了Accept-Charset,不妨再看看相关的参数

Accept-Encoding 首部明确说明了(接收端)可以接受的内容编码形式(所支持的压缩算法)。该首部的值是一个Q因子清单(例如 br, gzip;q=0.8),用来提示不同编码类型值的优先级顺序。默认值 identity 则优先级最低(除非声明为其他优先级)。将 HTTP 消息进行压缩是一种最重要的提升 Web 站点性能的方法。该方法会减小所要传输的数据量的大小,节省可用带宽。浏览器总是会发送该首部,服务器则应该配置为接受它,并且采用一定的压缩方案。

。。。找到一篇很详细的文章,就不一一粘贴了,https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Content_negotiation

 

言归正传,继续说header过长的问题

请求是通过RestTemplate发送的,发送之前设置header中的Accept-Charset,发现并没起作用

这就很奇怪,继续百度,发现RestTemplate初始化的时候,设置了MessageConverters,其中还有new StringHttpMessageConverter()

原来是需要特殊设置下StringHttpConvertoer,RestTemplate设置如下,然后问题解决了...

RestTemplate很好用,但是很多参数是需要自己设置的,否则就是默认值了...取默认值很可能效果不是最好的...

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值