我需要使用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);
它不会打印任何内容。
请帮助。
答案 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无关的参数:
所以你应该试试$json_Data = file_get_contents($url);
此外,要在浏览器中查看数据,您应该在输出print_r()之前尝试使用header('Content-type: text/plain');
,这样浏览器就不会进行处理
为确保您的浏览器确实没有任何内容,您也可以尝试使用FireFox + FireBug查看HTTP回复...