Feign調用時失敗,feign.FeignException:status 500 readingXXX。LocalDate序列化引發的錯誤

最近在項目中須要用feign作一個服務端調用,調用別的服務的接口將個人一些信息發給它,可是老是報錯:feign.FeignException:status 500 readingXXX。個人調用代碼以下:json

@PostMapping(value = "/xx/xxx") public ResultData<String> saveProjectInfo(ProjectInfo p);

按理說應該是沒問題的,對方也返回了code爲500的響應,說明請求確實送達了對方接口,可是沒有正常處理。網絡

因而懷疑是參數沒有傳對,而後就打斷點調試,把發送請求前的參數信息「p」複製出來,打開對方項目的swagger文檔,發送複製來的參數,發現能正常調通。app

這就奇怪了,一樣的參數在我這裏經過feign調用就不行,在swagger上直接調用就能夠。因而開始處處找緣由,最後在別人的建議下用抓包工具抓從我調用方法這裏發出的請求包,看看從我這裏發出的包是否任然與swagger上輸的參數同樣。工具

果真發現了問題,由於對方的ProjectInfo類的crateTime屬性是LocalDate類型的,爲了類型一致我這裏建實體類時也把createTime屬性設爲LocalDate類型的。測試

在swagger上測試直接輸字符串就行,對方的接口在接收參數時直接就將其轉爲LocalDate了:spa

{ ....... "createTime"  : "2020-01-09" ......... }

可是個人請求發出後,抓的包顯示createTime變成了這樣:調試

 

這就致使與對方的接收參數不一致,天然就直接報錯了。最後直接把個人ProjectInfo實體類的createTime屬性設爲String類型便可,也能夠引入jar包後使用一些註解在發送時將這個屬性序列化成指定的格式如」yyyy-MM-dd「code

總之就是對於LocalDate這個類,默認轉化爲json時將它當作了一個普通的JavaObject(我預期轉化成yyyy-MM-dd),而後發送到網絡上。而在對方接收時卻不能根據那種格式json正確的轉換成LocalDate類型的對象,因而就報錯。對象

相關文章
相關標籤/搜索