首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中的Json + post + curl

PHP中的Json + post + curl
EN

Stack Overflow用户
提问于 2012-12-09 02:31:08
回答 2查看 743关注 0票数 0

请不要在阅读我的实际问题之前结束这个问题。我已经看到了许多相关的问题,但我仍然有。简单地说,我想通过POST方法在PHP语言中使用CURL发送一个json_encoded数组。当我设置为content-type as application/json时,数据不会发布。我收到空的post数组。当我删除content-type行时,数据是posted的,但不是json。以下是我的代码

代码语言:javascript
运行
复制
 $data = array('id' => $post['id'], 'action' => $post['action']);
 $post_data = http_build_query($data);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));

在这种情况下,我收到了空帖子。如果我注释掉行curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));,我将收到post数据,但不会收到json编码。我想要json_encoded数组。谁能告诉我我做错了什么?

致以最良好的问候:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-09 02:41:52

您正在将查询字符串编码为json,而不是数组,删除$post_data = http_build_query($data);并将$data传递给json_encode。

代码语言:javascript
运行
复制
 $data = array('id' => $post['id'], 'action' => $post['action']);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

当然,要做到这一点,服务需要支持json post。

票数 1
EN

Stack Overflow用户

发布于 2012-12-09 02:42:08

尝试发送-n-接受原始POST请求,通过

代码语言:javascript
运行
复制
<?php $postdata = file_get_contents("php://input"); ?> 

RAW POST

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13780509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档