2016-07-19 153 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尝试它呢? –