前几天对接C#开发的http接口时,调用接口出现该类型报错,排查好久最后才发现是很简单的问题,在这记录一下。
使用post
+form-data
方式调用接口,接口参数与三方接口对接人沟通过,也看不出来什么问题,但是多个接口一直报错。
大致如下几种:
c#Unexpected character encountered while parsing number: _. Path '', line 1, position 36.
c#Unexpected character encountered while parsing value: 2. Path '', line 1, position 1.
c#Unexpected character encountered while parsing value: 配. Path '', line 1, position 1.
最后让三方对接人使用postman
调用接口,将正确参数发过来,才发现蛛丝马迹,经过总结如下:
字符串类型参数,如果包含某些特殊字符,需要多加一层引号。 举例:
例1:参数id
,其内容是:409c-82fe-6dbadaadc513_86
,传参时,一般看起来就是一个字符串,如:"409c-82fe-6dbadaadc513_86"
,但这么传就会报上边示例中第一个错,正确传参应该看起来是"\"409c-82fe-6dbadaadc513_86\""
,即:多加一层引号。
例2:日期参数2023/02/13 00:00:00
,应该传为:"\"2023/02/13 00:00:00\""
。
例3:中文参数测试
,应该传为"\"测试\""
。
java// 原来错误参数
// param.put("id", "409c-82fe-6dbadaadc513_86");
// 正确参数,给参数id原来的值前后拼接上引号
param.put("id", "\"" + "409c-82fe-6dbadaadc513_86" + "\"");
看起来像是含有特殊符号的字符串才需要多加一层引号。
总而言之:找到那个问题参数!多加一层引号就行了!
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!