Мне нужно отправлять переменные в API веб-сайта с использованием формата JSON. После некоторых исследований и с помощью теста почтового сервера, я придумал эту строку:Как опубликовать переменные с curl в JSON
curl -H "Content-Type: application/json" -X POST -d '{"id":"value"}' http://posttestserver.com/post.php
Successfully dumped 0 post variables.
View it at http://www.posttestserver.com/data/2015/09/12/09.46.20574590076
Post body was 12 chars long.
Однако переменные не обрабатывается из строки (она должна найти переменный «идентификатор» в данном случае). Вместо этого все помещается в тело сообщения.
полный запрос пост можно увидеть по этому адресу:
Time: Sat, 12 Sep 15 09:46:20 -0700
Source ip: 178.112.221.72
Headers (Some may be inserted by server)
HTTP_CONNECTION = close
REQUEST_URI = /post.php
QUERY_STRING =
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = 53709
REMOTE_ADDR = 178.112.221.72
CONTENT_LENGTH = 12
CONTENT_TYPE = application/json
HTTP_ACCEPT = */*
HTTP_USER_AGENT = curl/7.43.0
HTTP_HOST = posttestserver.com
UNIQUE_ID = VfRW3NBx6hIAAHNyJToAAAAK
REQUEST_TIME_FLOAT = 1442076380.6991
REQUEST_TIME = 1442076380
No Post Params.
== Begin post body ==
'{id:value}'
== End post body ==
Upload contains PUT data:
'{id:value}'
Здесь данные появляются как в «пост» тела и под PUT. Но опять же никаких параметров сообщения не указаны.
Я что-то не так? Можно ли вообще публиковать переменные с помощью JSON (как вы могли бы использовать id=value&id2=value2
с application/x-www-form-urlencoded
)?
PS Я нашел аналогичный пост (how to post with curl to REST/JSON service?), там это зависит от сервера. Но в моем случае, используя тестовый сервер, я должен видеть фактический «сырой» запрос (цитирую posttestserver.com
«Таким образом, я соединил простой сервис, который будет выгрузить содержимое из * HTTP POST в файл, который можно просмотреть на досуге ».
).
Спасибо за ваш ответ. Это похоже на ответ на вопрос: «Можно ли вообще публиковать переменные с помощью JSON?» не будет, по крайней мере, не так, как я думал, это будет (в основном, как альтернатива синтаксису url-encode). Но тогда, если служба, которую мне нужно использовать явно, требует JSON, это означает, что я должен быть в порядке с указанным выше кодом ... – m2oTech
Да. Это определенно возможно, но служба должна быть настроена на прием данных JSON, это в основном суть этого. – CollinD