使用php来解析从另一个php文件发布的json数据

时间:2011-01-02 14:57:12

标签: php json post curl

我的网络托管阻止了外向流量所以我使用免费的网络托管来读取数据并将其发布到我的服务器但问题是我的php文件在$ _REQUEST变量中接收数据但是无法解析它

post.php
    function postCon($pCon){
    //echo $pCon;
     $ch = curl_init('http://localhost/rss/recv.php');
     curl_setopt ($ch, CURLOPT_POST, 1);
     curl_setopt ($ch, CURLOPT_POSTFIELDS, "data=$pCon");
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     $d=curl_exec ($ch);
     echo $d."<br />";
     curl_close ($ch);

    }

recv.php

<?php
if(!json_decode($_REQUEST['data']))
    echo "json error";

echo "<pre>";
print_r($data);
echo "</pre>";
?>

每次出现json错误。 但echo $ _REQUEST ['data']给出了正确的json数据。 请帮助。

2 个答案:

答案 0 :(得分:1)

不应该这个吗?

$posts = array('data'=>$pCon);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $posts);

even the example in doc show that

来自doc

  

要在HTTP“POST”操作中发布的完整数据。要发布文件,请在文件前加上@并使用完整路径。这可以作为 urlencoded字符串传递,如'para1 = val1&amp; para2 = val2&amp; ...',或者作为一个数组,字段名称为键,字段数据为值。如果value是数组,则Content-Type标头将设置为multipart / form-data。从PHP 5.2.0开始,使用@前缀传递给此选项的文件必须以数组形式才能工作。

你现有的方式也应该有效,

$pCon是否可能包含一些urlencoded值,例如=, ?

答案 1 :(得分:0)

$posts = array('data'=>$pCon);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $posts);

这很有用。 (回答这个问题的人删除了这个帖子,所以我无法识别他的名字,所以谢谢你)

编辑: 还有一个小错误每个引号(“)被更改为(\”)我有一个非常困难的时间来纠正这个,所以现在我不是直接在json中发送数据但是第一个base64编码它,当页面收到它时,它base64解码它。 现在这完美无缺...... 谢谢你...