使用OkHttpUtil调用postJson方法报错:request body is missing

Blade 未结 2 3352
天际流痕
天际流痕 剑圣 2019-10-15 09:49

一、该问题的重现步骤是什么?

1. 通过OkHttpUtil.postJson方法调用后台接口。

2. 后台通过 @RequestBody bean 接收。


二、你期待的结果是什么?实际看到的又是什么?

可以正常调用到,不报错。

实际上,报错了

消息不能读取:Required request body is missing: public org.springblade.core.tool.api.R


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

BladeX 授权版。在Win10系统上。


四、请提供详细的错误堆栈信息,这很重要。

2019-10-15 09:41:44.829 DEBUG 20712 --- [ XNIO-1 task-81] .c.c.v.BladeRequestMappingHandlerMapping : Mapped to public org.springblade.core.tool.api.R

2019-10-15 09:41:44.829 ERROR 20712 --- [ XNIO-1 task-81] o.s.c.log.error.RestExceptionTranslator  : 消息不能读取:Required request body is missing: public org.springblade.core.tool.api.R


五、若有更多详细信息,请在下面提供。

请求方:

image.png

接收方:

image.png

请求方堆栈:

================  Response Start  ================

===Result===  {"code":200,"success":true,"data":"","msg":"操作成功"}

<=== POST: /sminterfacemanage/testForwardFeign (1476 ms)

================  Response End   ================


接收方堆栈:

2019-10-15 09:41:44.829 DEBUG 20712 --- [ XNIO-1 task-81] .c.c.v.BladeRequestMappingHandlerMapping : Mapped to public org.springblade.core.tool.api.R

2019-10-15 09:41:44.829 ERROR 20712 --- [ XNIO-1 task-81] o.s.c.log.error.RestExceptionTranslator  : 消息不能读取:Required request body is missing: public org.springblade.core.tool.api.R


接收方的controller可以在postman中调试通过。



补充一下:使用BladeX中封装的OkHttp是可以调用其他系统的controller的,但是不能调通BladeX内部的controller。其他系统中通过OkHttp也不能调通BladeX中的controller,感觉是对请求进行了拦截,然后重写了,在分析tool中的各种拦截器,暂时还没有找到原因。这个很影响我们公司的使用,因为要向外部公司提供接口,人家过来请求,我们是拿不到的啊。。。

2条回答
  • 2019-10-16 10:29

    1、尝试postman先调用,确保接口返回数据没问题。

    2、尝试先对调用接口放行

    3、放行不通过再尝试debug。

    作者追问:2019-10-16 10:57

    谢谢大佬的回答。

    我没有通过gateway去调用,是直接访问目标controller调用的。

    在外部系统中通过OKHttp也调用不通过这个controller,个人感觉是bladeX对controller中的Http做了处理,所以调用不通,但是找不到是在哪里处理的。

    0 讨论(0)
    1. 请求头设置json那段去掉debug看看

    0 讨论(0)
提交回复