Разместить объект json с помощью php (http post)? - PullRequest
1 голос
/ 09 декабря 2010

Мне нужно опубликовать объект json с запросом http post и обработать ответы.

JSON объект:

{
   "my_json" : "12345" 
}

Я написал что-то вроде этого, но это не работает.

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

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

print_r($json_Data);

И это ничего не печатает.

Помогите пожалуйста.

Ответы [ 4 ]

2 голосов
/ 09 декабря 2010

Клиент:

<?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);
?>
0 голосов
/ 09 декабря 2010

Проблема может быть в посторонних аргументах file_get_contents:

  • 2-й аргумент должен быть логическим и является необязательным (по умолчанию установлено значение false)
  • 3-й аргумент в порядке
  • 4-е должно быть целым числом, необязательно (значение по умолчанию -1)

Так что вам стоит попробовать $json_Data = file_get_contents($url);

Кроме того, чтобы просмотреть данные в вашем браузере, попробуйте использовать header('Content-type: text/plain'); непосредственно перед выводом с помощью print_r (), чтобы ваш браузер не обрабатывал

Чтобы убедиться, что на ваш браузер действительно ничего не отправлено, вы также можете попробовать FireFox + FireBug, чтобы увидеть ответы HTTP ...

0 голосов
/ 09 декабря 2010

Попробуйте это:

$jsonFile = 'http://localhost/my_json.json';
$jsonData = file_get_contents($jsonFile);
$phpData = json_decode($jsonData);
print_r($phpData);
0 голосов
/ 09 декабря 2010
$url = "http://localhost/my_json.json";

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

$new = json_decode($json_Data);

print_r($new);

Я думаю, что это может сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...