C#接口报错Unexpected character encountered while parsing ****
## 背景 > 前几天对接C#开发的http接口时,调用接口出现该类型报错,排查好久最后才发现是很简
渲染中...
## 背景
> 前几天对接C#开发的http接口时,调用接口出现该类型报错,排查好久最后才发现是很简单的问题,在这记录一下。
## 基本情况
使用`post`+`form-data`方式调用接口,接口参数与三方接口对接人沟通过,也看不出来什么问题,但是多个接口一直报错。
<!-- more -->
## 报错内容
大致如下几种:
```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参数处理代码示例:
```java
// 原来错误参数
// param.put("id", "409c-82fe-6dbadaadc513_86");
// 正确参数,给参数id原来的值前后拼接上引号
param.put("id", "\"" + "409c-82fe-6dbadaadc513_86" + "\"");
```
## 总结
看起来像是含有特殊符号的字符串才需要多加一层引号。
总而言之:**找到那个问题参数!多加一层引号就行了!**
END
评论
登录后查看和发表评论
前往登录