BASH CURL pass json данные для запроса POST - PullRequest
0 голосов
/ 11 марта 2020

я пытаюсь попытаться отправить запрос в сценарии 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 сценариях, нужна ваша помощь. Благодаря.

1 Ответ

0 голосов
/ 11 марта 2020

json поддерживает двойные кавычки

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;
...