PHP转发JSON对象

时间:2013-02-23 13:28:25

标签: php json

出于安全原因,我必须将JSON对象从Jquery脚本转发到PHP脚本。这就是我所做的:

<?php
header('Access-Control-Allow-Origin: *');

$input = @file_get_contents('php://input');
$content = json_encode( $input );

$url = $_GET["trakt_url"]."KEY";

$ch = curl_init($url);                                                                 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json')                                                                       
);                                                                                                                   

$result = curl_exec($ch);
echo $result;
?>

如果我记录$ content,我会得到JSON对象,但是我发布到的页面($ url)是一个空的Object。有人知道我做错了吗?

解决了(有人回答正确,但答案已删除?!)

curl_setopt($ ch,CURLOPT_POSTFIELDS,“json = $ content”);

1 个答案:

答案 0 :(得分:1)

尝试在请求标头中设置内容长度:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($content))                                                                       
);                                                                                                                   

您还需要确保将POSTFIELDS定义为urlencoded字符串,因为将其设置为数组会将内容类型覆盖为multipart/form-data。这将有效:

curl_setopt($ch, CURLOPT_POSTFIELDS, "json=$content");