问题说明
项目中需要用到feign调用多文件的接口,出现这个问题的前提是已经参照多数博客中的方法,为feign客户端重写了编码器的配置,可以参照feign多文件上传。我不知道这些博主有没有出现我这个问题,但是我按照他们的配置后,确出现了以下问题,前台返回了这个错误
未知异常!原因是: null
后台的异常是,无关紧要的省略了
feign.codec.EncodeException
.
.
.
Caused by: java.lang.NullPointerException
at feign.form.util.PojoUtil.isUserPojo(PojoUtil.java:50)
at feign.form.multipart.PojoWriter.isApplicable(PojoWriter.java:40)
at feign.form.MultipartFormContentProcessor.findApplicableWriter(MultipartFormContentProcessor.java:159)
at feign.form.MultipartFormContentProcessor.process(MultipartFormContentProcessor.java:86)
at feign.form.FormEncoder.encode(FormEncoder.java:105)
at cn.farmall.file.config.FeignSpringFormEncoder.encode(FeignSpringFormEncoder.java:42)
at feign.ReflectiveFeign$BuildEncodedTemplateFromArgs.resolve(ReflectiveFeign.java:372)
... 100 more
解决办法
在自定义的在自定义的的编码中,修改传输文件的委托编码器顺序
public FeignSpringFormEncoder(Encoder delegate) {
super(delegate);
MultipartFormContentProcessor processor = (MultipartFormContentProcessor)this.getContentProcessor(ContentType.MULTIPART);
//前移添加MultipartFiles的委托编码器(多文件)
processor.addFirstWriter(new SpringManyMultipartFilesWriter());
//前移添加MultipartFile的委托编码器(单文件)
processor.addFirstWriter(new SpringSingleMultipartFileWriter());
//别人的方法,添加MultipartFiles的委托编码器(多文件)
// processor.addWriter(new SpringManyMultipartFilesWriter());
//别人的方法,添加MultipartFile的委托编码器(单文件)
// processor.addWriter(new SpringSingleMultipartFileWriter());
}
问题分析(以下不感兴趣可跳过,只是记录自己思考的过程,内容顺序上可能有些杂乱)
开始出现这问题的时候,我一直以为,我经过一番删代码,找其他办法重写,再删代码,再找其他办法重写,三删代码,三找其他办法重写,一番体验和效果都极佳的百度处理后。我对未来充满了信心,喜悦之情油然而生。
找你妹啊,全都是按照一个套路,我不要面子的。于是乎我只能忽略我是个菜鸡,开始调试源码。(这个反反复复的弄了几次,虽然已经找到错误位置,可是开始并没有想到怎么处理,主要是刚刚开始学这个,对一些处理并不懂,哪怕是参考人家的代码,也不懂为什么要这么做,自己菜就不多说了。)
- 为什么出现空指针的异常,从异常日志可以看到是 feign.form.util.PojoUtil.isUserPojo(PojoUtil.java:50) 这个地方出现的异常,这是什么,不能着急,从根源跟踪一些它在搞什么东西,打个断点跟踪(以下代码说明断点位置而已,防止有人看,多说一点废话,万一有跟我一样的萌新呢,要一步一步来),这个方法在参考文章中的FeignSpringFormEncoder 方法
public void encode(Object object, Type bodyType

最低0.47元/天 解锁文章
426

被折叠的 条评论
为什么被折叠?



