用curl调用post接口json参数中带中文出现400错误,在postman中测试正常!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用curl调用post接口json参数中带中文出现400错误,在postman中测试正常!相关的知识,希望对你有一定的参考价值。

先上脚本:(接口的真实地址我就不发上来了.)#!/bin/shaa='"uuid":"1234567890","alarmLevel":"1","alarmType":"15","alarmContent":"项目中断"';#aa='"uuid":"1234567890","alarmLevel":"1","alarmType":"15","alarmContent":"1111"';echo $aa;re=`curl -X POST -H "Content-Type:application/json;charset=UTF-8" -d $aa http://xxxxxxxxxx.com/pjops/alarm/reportAlarm`;echo $re;问题:如标题所说,我在前面那个 aa参数带中文的时候 返回400错误.(如截图第一张) 用下面接口则正常返回数据. 脚本文件 编码 fileencoding 我已经设置为utf-8了而我用谷歌的工具postman测试不管用中文还是英文都完全没有问题.请问这个大概是什么原因? 百度几天了查不出来. 没有方向了. 或者是有什么代替方法可以在linux下调用POST接口的? 谢谢

将json使用base64 编码然后发送到服务器呢 参考技术A 转一下编码 unicode 呢追问

怎么转啊? 我按百度上用 iconv script_001.sh -f US-ASCII -t UTF-8 -o script_002.sh 这个命令 转发现编码都一样的 转不成功,,,,

追答

直接百度在线转。。。

使用curl命令快速验证接口

本地我们经常使用较为方便的postman来验证调用接口,但是服务器上是没有postman的,这时可以用curl命令实现快速验证访问接口:

curl -l -H "Content-type: application/json" -X POST -d {"url":"http://www.dwntme.com/h.ZYJB5zD"} http://127.0.0.1:8987

上面是post格式的curl请求,-d 后面是json格式的参数。

希望对你有帮助。

以上是关于用curl调用post接口json参数中带中文出现400错误,在postman中测试正常!的主要内容,如果未能解决你的问题,请参考以下文章

post请求 参数json序列化报错: cannot deserialize from Object value

记录:http接口测试必学之curl命令

记一次curl post请求数据被截断问题处理

thinkphp5.0 CURL用post请求接口数据

210629:Linux中使用curl命令发送带参数的get请求和post请求-Redis中常用命令

Yii2通过curl调用json-rpc接口