0

在阅读我的实际问题之前,请不要关闭这个问题。我已经看到了许多相关的问题,但我仍然有。只是我想通过在 PHP 中使用的方法发送一个json_encoded数组。当我设置数据不发布。我收到空数组。当我删除内容类型行时,数据被发布但不是 json。这是我的代码POSTCURLcontent-type as application/jsonpost

 $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'));,我将收到帖子数据,但不会收到 json 编码。我想要 json_encoded 数组。有人会告诉我我做错了什么吗?

最好的祝福:

4

2 回答 2

1

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

 $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));

当然,这可以让服务 nedds 支持 json 帖子。

于 2012-12-08T18:41:52.370 回答
1

尝试 send-n-accept RAW POST 请求,通过

<?php $postdata = file_get_contents("php://input"); ?> 

原始帖子

于 2012-12-08T18:42:08.420 回答