Как передать JSON в URL через CURL?

Я хочу сделать что-то вроде следующего:

curl localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}

Это работает довольно нормально, когда я пытаюсь получить доступ к странице через браузер, но это не работает через cURL. Что я делаю неправильно?

1 ответ

Решение

Проблема вызвана синтаксическим анализатором URL-адреса cURL (см. Документацию):

Вы можете указать несколько URL или частей URL, написав наборы деталей в фигурных скобках, как показано в:

Http://{один, два, три}.com

Таким образом, ваша команда расширяется до:

curl localhost:8080/myapp/?params="first_key":"I'm the first value"
curl localhost:8080/myapp/?params="second_key":"the second value"

Вам нужно использовать -g вариант (или --globoff):

Эта опция отключает "анализатор глобализации URL". Когда вы устанавливаете эту опцию, вы можете указать URL-адреса, которые содержат буквы {}[], без их интерпретации самим curl.

Так:

curl -g localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}

Затем, чтобы сохранить двойные кавычки, вам нужно заключить URL в одинарные кавычки:

curl -g 'localhost:8080/myapp/?params={"first_key":"I'\''m the first value","second_key":"the second value"}'
Другие вопросы по тегам