这里的关键是 这个 ,设置为 ,会覆盖掉 dubbox 默认的 编码。
这个问题的发生原因是 dubbox 使用的是 框架解析上传数据, 框架会判断 request 的 将 为 的 request 交给 包来解析,大致解析过程如下:
- 框架确定 Content-Type 为 multipart/form-data,这个常量定义在 jax 支持包的 MediaType 接口中;
- 框架将请求交给 MultipartFormDataReader ,这个 Reader 注解为 Provider,调用readForm 方法,解析请求;
- MultipartFormDataInputImpl 的 parse 方法解析 body 内容,读取数据,乱码发生在这个方法内部;
- MultipartFormDataInputImpl 的 parse 方法是继承自父类:MultipartInputImpl 的,解析过程稍微有点复杂,但是最终是通过构造 PartImpl 来表示每一个参数的。
- InputPart 来表示 Form 表单中每一项参数,PartImpl 是 InputPart 的一个实现类,构造的时候传入BodyPart,然后做解析,构造过程如下:
- 框架使用 MultipartFormDataInputImpl 读取 body 内容发生乱码,源代码注释如下。
默认的 Content-Type 在 MultipartInputImpl 中,定义如下,这个是成员初始化的默认值,在构造的时候可以覆盖掉。
默认的defalutPartCharst的初始化时在构造MultipartInputImpl的时候,在构造方法中,这个对象,每次请求都会new一个,所以是和request相关的:
到此这篇webflux webclient(webflux webclient 传递context)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/70697.html