【问题标题】:BASH CURL pass json data for POST requestBASH CURL 为 POST 请求传递 json 数据
【发布时间】:2020-06-23 07:43:05
【问题描述】:

我试图尝试在 BASH 脚本中发布请求,但不知何故,我的 json 数据无法在下面找到是我的代码。

header=$(curl  -sb -H "Accept: application/json" "http://localhost:4040/api/tunnels")

# this is json format
tunnels=`echo "$header"`


echo "{'token':'xoxp-token-key','channel':'hybridteam','appname':'Server Unit', 'data': ${tunnels}}"

header2=$(curl -H "Content-type: application/json" -H "Accept: application/json" -sb -d "{'token':'token-key-here','channel':'hybridteam-ngrok','appname':'This is testing PC', 'data': ${tunnels}}" -X POST  "https://localhost:8080")

success=`echo "$header2"`
echo $success

我的服务器获取这样的数据

$data = json_decode(isset($_POST['data'])? $_POST['data'] : $_GET['data']);
$token = isset($_POST['token'])? $_POST['token'] : $_GET['token'];
$channel = isset($_POST['channel'])? $_POST['channel'] : $_GET['channel'];

但在我的服务器上,我不断收到此响应

<br /> <b>Notice</b>: Undefined index: data in <b>C://xampp/htdocs/server/index.php</b> on line <b>30</b><br /> <br /> <b>Notice</b>: Undefined index: token in <b>C://xampp/htdocs/server/index.php</b> on line <b>31</b><br /> <br /> <b>Notice</b>: Undefined index: channel in <b>C://xampp/htdocs/server/index.php</b> on line <b>32</b><br />

请问我是 bash 脚本的新手,需要您的帮助。 谢谢。

【问题讨论】:

  • 根据您的 PHP 实现,您期望 3 个单独的字段,并且您尝试只发送一个 json。

标签: linux bash terminal sh


【解决方案1】:

json支持double quotes

curl -H "Content-type: application/json" \
 -H "Accept: application/json" -sb \
-d "{\"token\":\"token-key-here\",\"channel\":\"hybridteam-ngrok\",\"appname\":\"This is testing PC\", \"data\": ${tunnels}}" \
-X POST  "https://localhost:8080"

您需要读取原始 POST 正文并将其转换为对象或数组。

$raw = file_get_contents("php://input");
$data = json_decode($raw,true);
$token = isset($data['token'])? $data['token'] : null;
$channel = isset($data['channel'])? $data['channel'] : null;

【讨论】:

  • 也不行,有没有办法把json转成json字符串,这样双引号会被转义?
  • 你能解释一下“it doesn't work”的意思吗?我小时候就失去了读心能力,所以请说清楚。
猜你喜欢
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
相关资源
最近更新 更多