發表文章

目前顯示的是 2019的文章

解決 jsonrpc4j error code -32602 method parameters invalid 的錯誤

圖片
使用 briandilley/jsonrpc4j 時,server response 可能遇到這個錯誤:     "error": {         "code": -32602,         "message": "method parameters invalid"     } jsonrpc4j 會分析 input params 與 java method params 是不是一致,它會檢查 params 數量、名稱,如果沒有 mapping 就拋出錯誤了。 我們可以從 com.googlecode.jsonrpc4j.JsonRpcBasicServer Class 查看到,裡面的 private AMethodWithItsArgs findBestMethodByParamsNode(Set<Method> methods, JsonNode paramsNode) 就是在處理這塊,視 input 資料結構分別呼叫 findBestMethodUsingParamIndexes 或 findBestMethodUsingParamNames 處理。 接下來看 findBestMethodUsingParamNames 從這裡可以發現 jsonrpc4j 會檢查 params size是否一致、是否允許 allowExtraParams 與 allowLessParams。 解決方法: 若使用 spring boot 整合 jsonrpc4j,只要在 AutoJsonRpcServiceImplExporter 之處增加設定即可,例如: @Bean     public static AutoJsonRpcServiceImplExporter autoJsonRpcServiceImplExporter() {         AutoJsonRpcServiceImplExporter exp = new AutoJsonRpcServiceImplExporter();         exp.setAllowExtraParams(true);         exp.setAllowLessParams(