2016-07-19 154 views
1

我使用安裝在Ubuntu的CURL發送JSON到PHP page.There在那個頁面我試圖解碼JSON數據並存儲到數據庫。如何檢索從終端發佈的PHP使用CURL JSON數據

在這裏它用於發送JSON

curl -i -X POST -d '{"Customer":{"first_name":"First name","last_name":"last name","email":"[email protected]","addresses":{"address1":"some address","city":"city","country":"CA","first_name":"Mother","last_name":"Lastnameson","phone":"555-1212","province":"ON","zip":"123 ABC"}}}' https://phpserver-chaturasan.c9users.io/listener.php 

輸出上終端的命令:

HTTP/1.1 200 OK 
date: Tue, 19 Jul 2016 05:32:25 GMT 
server: Apache/2.4.7 (Ubuntu) 
x-powered-by: PHP/5.5.9-1ubuntu4.17 
set-cookie: XDEBUG_SESSION=cloud9ide; expires=Tue, 19-Jul-2016  06:32:25 GMT; Max-Age=3600; path=/ 
set-cookie: XDEBUG_SESSION=cloud9ide; expires=Tue, 19-Jul-2016 06:32:25 GMT; Max-Age=3600; path=/ 
vary: Accept-Encoding 
content-length: 947 
keep-alive: timeout=5, max=100 
content-type: text/html 
X-BACKEND: apps-proxy 

/home/ubuntu/workspace/listener.php:11: 
string(258) "{"Customer":{"first_name":"First name","last_name":"last name","email":"[email protected]","addresses":{"address1":"some address","city":"city","country":"CA","first_name":"Mother","last_name":"Lastnameson","phone":"555-1212","province":"ON","zip":"123 ABC"}}}" 
hello world/home/ubuntu/workspace/listener.php:14: 
array(1) { 
    'Customer' => 
    array(4) { 
    'first_name' => 
    string(10) "First name" 
    'last_name' => 
    string(9) "last name" 
    'email' => 
    string(15) "[email protected]" 
    'addresses' => 
    array(8) { 
     'address1' => 
     string(12) "some address" 
     'city' => 
     string(4) "city" 
     'country' => 
     string(2) "CA" 
     'first_name' => 
     string(6) "Mother" 
     'last_name' => 
     string(11) "Lastnameson" 
     'phone' => 
     string(8) "555-1212" 
     'province' => 
     string(2) "ON" 
     'zip' => 
     string(7) "123 ABC" 
    } 
    } 
} 

PHP頁代碼:

<?php 
ini_set("allow_url_fopen", true); 
/*if(isset($_POST['Customer'])){ 
    $db = new mysqli("localhost","root","","gen"); 
    $name = $db->real_escape_string($_POST['Scenes']); 
    $query = "INSERT INTO g SET name = '$name'"; 
    $db->query($query); 
} 
*/ 

$jsonStr = file_get_contents("php://input"); //read the HTTP body. 
var_dump($jsonStr); 
echo "hello world"; 
$json = json_decode($jsonStr, true); 
var_dump($json); 
/*db = new mysqli("localhost","root","","gen"); 
$query = "INSERT INTO g SET name = '$json'"; 
$db->query($query);*/ 
?> 

但頁面的輸出是

/home/ubuntu/workspace/listener.php:11: string(0) "" hello world/home/ubuntu/workspace/listener.php:14: NULL 

現在我該如何存儲JSON數據?

回答

0

我不知道你想達到的目標。但從你的問題,我猜

  1. 您正在從CLI(命令行/終端)與JSON編碼數據進行cURL調用。然後你正在處理數據。
  2. 您希望當您通過網絡服務器訪問該文件時,該數據將以某種方式可用。

如果是這樣的話,那麼,你需要在一個persistant storage數據存儲就像在最基本的意義上的平面文件或類似MySQL按照註釋掉的代碼數據庫,然後檢索相同需要的時候,特別是因爲php是無狀態的,所以每個調用都是一個新的調用。

一旦我更清楚地知道你的問題究竟是什麼,那麼應該進一步更新答案。

+1

謝謝你的答案我將json文件直接存儲到mysql – Chaturasan

0

試試看我的來源。它對我來說很好!

$data_string = '{"Customer":{"first_name":"First name","last_name":"last name","email":"[email protected]","addresses":{"address1":"some address","city":"city","country":"CA","first_name":"Mother","last_name":"Lastnameson","phone":"555-1212","province":"ON","zip":"123 ABC"}}}'; 

$ch = curl_init('https://phpserver-chaturasan.c9users.io/listener.php'); 
$options = array(
    CURLOPT_RETURNTRANSFER => true,  // return web page 
    CURLOPT_HEADER   => false, // don't return headers 
    CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
    CURLOPT_ENCODING  => "",  // handle all encodings 
    CURLOPT_USERAGENT  => "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0", // who am i 
    CURLOPT_AUTOREFERER => true,  // set referer on redirect 
    CURLOPT_CONNECTTIMEOUT => 120,  // timeout on connect 
    CURLOPT_TIMEOUT  => 120,  // timeout on response 
    CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 
    CURLOPT_SSL_VERIFYPEER => false  // Disabled SSL Cert checks 
); 
curl_setopt_array($ch, $options);      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                  
    'Content-Length: ' . strlen($data_string)));                 
$result = curl_exec($ch); 
echo $result; 

我的結果

enter image description here

+0

Yay我用這個代碼也有同樣的結果 – Chaturasan

+0

我已經更新了我的源代碼。因爲你的鏈接是https,所以需要setopt_array'CURLOPT_SSL_VERIFYPEER => false'xD –

+0

@Chaturasan嘗試它呢? –