如何在JSON中使用curl发布变量

我需要使用JSON格式将变量发布到网站API。 经过一些研究并使用测试帖服务器后,我想出了这个字符串:

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.

然而,没有变量从字符串中解析出来(在这种情况下它应该找到变量“id”)。 相反,所有内容都放入帖子主体中。

完整的帖子请求可以在给定的地址看到:

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}'

这里的数据出现在“post body”和PUT下。 但是再次没有列出任何后期参数。

难道我做错了什么? 是否可以使用JSON发布变量(通过在application/x-www-form-urlencoded使用id=value&id2=value2 application/x-www-form-urlencoded )?

PS我发现了一个类似的帖子(如何使用curl发布到REST / JSON服务?),这取决于服务器。 但在我的情况下,通过使用这个测试服务器,我应该看到实际的“原始”请求(从posttestserver.com引用

“因此,我已经制定了一项简单的服务,将一个* HTTP POST的内容转储到一个可以随时查看的文件中。”

)。


您会注意到它确实在Post Body部分显示了您的数据。 当你使用application / json通过CURL发送时,它只需将该JSON输入到主体中。 如果它是x-www-form-urlencoded它会将其序列化为PHP可以本身理解的格式,例如: id=value 。 看起来它是按照预期工作的,只是服务器不理解JSON。

如果您希望该特定服务正确理解您的内容,则需要将其序列化为标准的x-www-form-urlencoded格式,只需执行-d "id=value"

链接地址: http://www.djcxy.com/p/1337.html

上一篇: How to post variables with curl in JSON

下一篇: cURL post json data, json array and image files REST api testing