Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JSON中使用curl发布变量_Json_Curl_Http Post_Http Post Vars - Fatal编程技术网

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

如何在JSON中使用curl发布变量,json,curl,http-post,http-post-vars,Json,Curl,Http Post,Http Post Vars,我被要求使用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

我被要求使用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”)。取而代之的是,所有的东西都放进了帖子的主体中

可在给定地址查看完整的post请求:

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参数

我做错什么了吗?是否可以使用JSON发布变量(就像使用
id=value&id2=value2
application/x-www-form-urlencoded
一样)

PS我发现了一个类似的post(),它取决于服务器。但是在我的例子中,通过使用这个测试服务器,我应该可以看到实际的“原始”请求(引用自posttestserver.com)

“因此,我建立了一个简单的服务,它将转储内容 将*HTTP POST发送到可在空闲时查看的文件。”


).

您会注意到它实际上在
文章正文
部分显示了您的数据。当您使用application/json通过CURL发送时,它只是将json泵入到主体中。如果它是
x-www-form-urlencoded
,它会将其序列化为PHP可以在本机理解的格式,例如:
id=value
。看起来它工作正常,只是服务器不理解JSON


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

谢谢您的回复。看起来“是否可以使用JSON发布变量?”这个问题的答案是否定的,至少不是我想象的那样(基本上作为url编码的语法替代)。但是,如果我需要使用的服务明确要求JSON,这意味着我应该可以使用上面的代码……是的。这当然是可能的,但服务需要配置为接受JSON数据,这基本上是它的要点。