webflux webclient(webflux webclient 传递context)

webflux webclient(webflux webclient 传递context)背景 最近开发 Dubbox 服务 使用了 Http 协议对 PHP 系统暴露了一些 Service 服务 但是在上传时出现了乱码 google 没有发现好的解决方案 只能自己 debug 发现是配置中缺少一项 解决方案 直接说解决方案 添加一个 filter filter 内容如下 这里的关键是 这个 设置为 会覆盖掉 dubbox 默认的 编码 这个问题的发生原因是 dubbox 使用的是

大家好,我是讯享网,很高兴认识大家。



添加一个filter,filter内容如下:

这里的关键是 这个 ,设置为 ,会覆盖掉 dubbox 默认的 编码。

这个问题的发生原因是 dubbox 使用的是 框架解析上传数据, 框架会判断 request 的 将 为 的 request 交给 包来解析,大致解析过程如下:


讯享网

  1. 框架确定 Content-Type 为 multipart/form-data,这个常量定义在 jax 支持包的 MediaType 接口中;
  2. 框架将请求交给 MultipartFormDataReader ,这个 Reader 注解为 Provider,调用readForm 方法,解析请求;
  3. MultipartFormDataInputImpl 的 parse 方法解析 body 内容,读取数据,乱码发生在这个方法内部;
  • MultipartFormDataInputImpl 的 parse 方法是继承自父类:MultipartInputImpl 的,解析过程稍微有点复杂,但是最终是通过构造 PartImpl 来表示每一个参数的。
  • InputPart 来表示 Form 表单中每一项参数,PartImpl 是 InputPart 的一个实现类,构造的时候传入BodyPart,然后做解析,构造过程如下:
  • 框架使用 MultipartFormDataInputImpl 读取 body 内容发生乱码,源代码注释如下。

默认的 Content-Type 在 MultipartInputImpl 中,定义如下,这个是成员初始化的默认值,在构造的时候可以覆盖掉。

默认的defalutPartCharst的初始化时在构造MultipartInputImpl的时候,在构造方法中,这个对象,每次请求都会new一个,所以是和request相关的:

小讯
上一篇 2025-04-20 23:41
下一篇 2025-06-09 15:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/180307.html