用php(http post)发布json对象?

时间:2010-12-09 12:19:36

标签: php json

我需要使用http post请求发布json对象并处理响应。

json对象:

{
   "my_json" : "12345" 
}

我写了这样的东西,但这不起作用。

$url = "http://localhost/my_json.json";

$json_Data = file_get_contents($url,0,null,null);

print_r($json_Data);

它不会打印任何内容。

请帮助。

4 个答案:

答案 0 :(得分:2)

客户端:

<?php
$data = array('foo' => 'bar', 'red' => 'blue');


$ch = curl_init();
$post_values = array( 'json_data' => json_encode( $data ) );
curl_setopt($ch, CURLOPT_URL, 'http://localhost/server.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_values);
$data = curl_exec($ch);
if(!curl_errno($ch))
{
  echo 'Received raw data' . $data;
}
curl_close($ch);
?>

服务器(server.php):

<?php
$data = json_decode( $_POST['json_data'] );
// ... do something ...
header('Content-type: text/json');
print json_encode($response);
?>

答案 1 :(得分:0)

$url = "http://localhost/my_json.json";

$json_Data = file_get_contents($url,0,null,null);

$new = json_decode($json_Data);

print_r($new);

我认为可能会这样做

答案 2 :(得分:0)

试试这个:

$jsonFile = 'http://localhost/my_json.json';
$jsonData = file_get_contents($jsonFile);
$phpData = json_decode($jsonData);
print_r($phpData);

答案 3 :(得分:0)

问题可能来自file_get_contents无关的参数:

  • 2d arg应该是布尔值并且是可选的(默认值为false)
  • 第3个arg没问题
  • 第4个应该是整数,是可选的(默认值是-1)

所以你应该试试$json_Data = file_get_contents($url);

此外,要在浏览器中查看数据,您应该在输出print_r()之前尝试使用header('Content-type: text/plain');,这样浏览器就不会进行处理

为确保您的浏览器确实没有任何内容,您也可以尝试使用FireFox + FireBug查看HTTP回复...