gpt4 book ai didi

linux - BASH CURL为POST请求传递json数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:27 25 4
gpt4 key购买 nike

我尝试在 BASH 脚本中 POST 请求,但不知何故,在我的代码下面找不到我的 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 脚本新手,需要你的帮助。谢谢。

最佳答案

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;

关于linux - BASH CURL为POST请求传递json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60634074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com