(проблемы со строкой) Как выполнить POST-вызов curl со строкой данных? - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь вызвать команду curl с помощью команды sh, но я получаю «ошибки синтаксического анализа JSON», что бы я ни пытался.

sh """
  curl -s -X POST \
    --url www.example.com
    --data \"{\'state\': \'failure\'}\"
  """

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Проблема: Я думаю, что вы добавили терминаторы неправильно.

Решение: Просто используйте этот формат. Должно работать нормально.

curl -s -X POST --header "Content-Type: application/json" \
  --request POST \
  --data '{"state":"failure"}' \
  http://www.example.com
0 голосов
/ 04 июля 2018

Стандарт JSON требует двойных кавычек вокруг пар ключ-значение. Похоже, в вашем примере вы пропустили \ и после --url.

Попробуйте:

sh '''
    curl -s -X POST \
    -H \'Content-type: application/json\' \
    --url www.example.com \
    --data \'{"state": "failure"}\'
'''

Если в конечном итоге вам понадобится использовать строковую интерполяцию, тогда

sh """
    curl -s -X POST \
    -H 'Content-type: application/json' \
    --url www.example.com \
    --data '{\"state\": \"status\"}'
"""
...