2014-02-05 67 views
0

我有一個每隔幾分鐘就會生成JSON的內部服務器。我需要將它傳遞給外部服務器,以便我可以操作這些數據,然後將其呈現在Web界面中。 這裏是我的Python的數據發送到PHP腳本:從PYTHON發送到PHP後處理POST數據

x = json.dumps(data) 

print '\nHTTP Response' 

headers = {"Content-type": "application/json"} 

conn = httplib.HTTPConnection("myurl.com") 

conn.request("POST", "/recieve/recieve.php", x, headers) 
response = conn.getresponse() 
text = response.read() 
print "Response status: ",response.status,"\n",text 
conn.close() 

,這裏是我的PHP來接收數據

$data = file_get_contents('php://input'); 
$objJson = json_decode($data); 
print_r ($objJson); 

與響應狀態200這是很好的和我的Python腳本返回返回我的JSON。但在PHP方面,我希望能夠存儲這些信息來操作,然後讓Web客戶端抓住它。不過看起來,即使我說

print_r ($objJson); 

當我訪問.php頁面時,它不打印出我的對象。我想數據已經消失了,因爲file :: input將只讀且結束?

+0

它打印什麼? 'Array()'或者什麼都沒有?什麼'strlen($ data)'打印? – vladkras

+0

strlen($ data)print 2512 – Jay

+0

hmm,print_r($ data)'print? – vladkras

回答

0

不要使用file_get_contents()

剛:

if($_POST){ echo "WE got the data"; } 

print_r將幫助你從哪裏去那裏,如果你不熟悉PHP數組。

+0

好吧,我試了print_r($ _ POST); $ objJson = json_decode(「$ _ POST」); print_r($ objJson); – Jay

+0

但它只給了我一個Array()。 – Jay

+0

if($ _ POST){echo「WE got the data」; }返回notihng我猜沒有什麼是實際被髮送$ _POST – Jay

0

嘗試使用命名參數包含您的JSON數據同時發送數據到PHP,並嘗試使用$_POST超全局數組在PHP(因爲你明明通過CGI或通過CLI類似的接口不連接)。 您可以打印您的$ _POST陣列看到所有的POST數據:

print_r($_POST); 
0

以下是我到底做了作爲一個快速解決

蟒蛇

x = json.dumps(data) 
headers = {"Content-type": "application/json"} 
conn = httplib.HTTPConnection("myurl.com") 

conn.request("POST", "/script.php", x, headers) 
response = conn.getresponse() 
text = response.read() 
print "Response status: ",response.status,"\n",text 
conn.close() 

然後我意識到PHP被接收後的數據,但我有一個很難操縱它。因此,我只是將JSON發送到接收的PHP文件,該文件將數據寫入文件,然後再有另一個JavaScript請求獲取該文件。 php的

if($_POST){ echo "WE got the data\n"; } //thanks rm-vanda 
$data = file_get_contents('php://input'); 
$file = 'new.json'; 
$handle = fopen($file, 'a'); 
fwrite($handle, $data); 
fclose($handle); 
exit; 
從我的客戶只是該文件的ajax請求

然後和解析它在客戶端。

最終我不得不重新考慮這個,但它現在可行。每次新數據進入時,我還必須重寫new.json文件,或者在JavaScript成功回調中解析舊數據。取決於你想要做什麼。