2014-02-20 2 views
1

Я хочу сделать что-то вроде следующего:Как передать JSON в url через cURL?

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

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

ответ

3

Проблема вызвана «URL глобирование парсер» Curl (в см docs):

Вы можете указать несколько адресов или частей 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 -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"}'