У меня есть две жизненно важные машины, установленные на рабочей станции VMWare, и они имеют разные IP-адреса. Я хочу отправить массив JSON с одной виртуальной машины на другую. Поэтому я использую библиотеку PHP cURL для отправки данных, и следую этот урок. Ниже мой фрагмент кода. Ради этого вопроса, давайте предположим, что AAA.BBB.CCC.DDD
IP-адрес хоста назначения, куда я хочу отправить данные JSON.
У меня есть два вопроса:
2. Когда я выполняю этот сценарий на локальном хосте и тем временем запускаю Wireshark, три пакета, похоже, отправляются на конкретный IP-адрес назначения. НО я не знаю, как получить конкретные данные JSON на целевой машине? Было бы здорово, если бы кто-то мог указать мне на учебник для этого или дать мне подсказку?
<?php
$url = "http://AAA.BBB.CCC.DDD"; // AAA.BBB.CCC.DDD is replaced by the IP address of destination host.
//Initiate cURL.
$ch = curl_init($url);
//The JSON data.
$jsonData = array(
'name' => 'Jeremy',
);
//Encode the array into JSON.
$jsonDataEncoded = json_encode($jsonData);
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
//Execute the request
$result = curl_exec($ch);
Мой простой тестовый пример:
<?php
$url = 'http://localhost/curl-req.php';
$data = array("name" => "Heniek", "age" => "125", "rozmiar" => "M");
$data = json_encode($data);
// Send post data Json format
echo CurlSendPostJson($url,$data);
// send curl post
function CurlSendPostJson($url='http://localhost/curl-req.php',$datajson){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
return $result = curl_exec($ch);
}
?>
<?php
// save belove to: curl-req.php
// GET JSON CONTENT FROM CURL
$jsonStr = file_get_contents("php://input"); //read the HTTP body.
//echo $json = json_decode($jsonStr);
if (!empty($jsonStr)) {
echo $jsonStr;
}
// POST DATA FROM CURL
if (empty($jsonStr)) {
echo serialize($_POST);
}
// GET DATA FROM CURL
if (!empty($_GET)) {
echo serialize($_GET);
}
?>
Других решений пока нет …