请不要在阅读我的实际问题之前结束这个问题。我已经看到了许多相关的问题,但我仍然有。简单地说,我想通过POST方法在PHP语言中使用CURL发送一个json_encoded数组。当我设置为content-type as application/json时,数据不会发布。我收到空的post数组。当我删除content-type行时,数据是posted的,但不是json。以下是我的代码
$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数组。谁能告诉我我做错了什么?
致以最良好的问候:
发布于 2012-12-09 02:41:52
您正在将查询字符串编码为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));当然,要做到这一点,服务需要支持json post。
发布于 2012-12-09 02:42:08
尝试发送-n-接受原始POST请求,通过
<?php $postdata = file_get_contents("php://input"); ?> RAW POST
https://stackoverflow.com/questions/13780509
复制相似问题