2023-02-17
温故知新
00
请注意,本文编写于 643 天前,最后修改于 239 天前,其中某些信息可能已经过时。

目录

背景
基本情况
报错内容
报错原因及解决
Java参数处理代码示例:
总结

背景

前几天对接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参数处理代码示例:

java
// 原来错误参数 // param.put("id", "409c-82fe-6dbadaadc513_86"); // 正确参数,给参数id原来的值前后拼接上引号 param.put("id", "\"" + "409c-82fe-6dbadaadc513_86" + "\"");

总结

看起来像是含有特殊符号的字符串才需要多加一层引号。

总而言之:找到那个问题参数!多加一层引号就行了!

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!