2016-05-14 93 views
1

我試圖通過URL將python文件中的JSON發送到PHP文件。 PHP文件被調用並正確運行。但它不會捕獲我試圖發送的msg數據。但它顯示NULL。通過URL發送msg從Python到PHP文件的NULL值

myPython.py

import requests, json 
url = 'http:/mywebsite.com/api/v1/myPhpFile.php?msg=' 
payload = {'firstname':'Olivia', 'city':'London', 'country':'UK'} 
r = requests.post(url, data=payload) 

也試過:

r = requests.post(url, data=json.dumps(payload)) 

myPHP.php

<?php 
... 

class AddUser extends Abstractor { 
    public $log; 

    public function __construct() { 
     $this -> log = new MyLogPHP('../includes/debug.log.txt');  
    } 

    public function processJob($workerMsg) { 
     $this -> log -> info($workerMsg, 'W/ADD-USER'); 
    } 
} 

$addUser = new AddUser(); 
$response = $addUser -> processJob($_REQUEST['msg']); 

在日誌中,我得到NULL值。

我甚至通過去掉 '?味精='

myPython.py

import requests, json 
url = 'http:/mywebsite.com/api/v1/myPhpFile.php' 
payload = {'msg':{'firstname':'Olivia', 'city':'London', 'country':'UK'}} 
r = requests.post(url, data=payload) 

r = requests.post(url, data=json.dumps(payload)) 

我在做什麼錯在這裏編輯URL嘗試?

+1

你發送的請求主體的數據,並試圖把它撿起來,在參數網址。這是兩回事。研究如何訪問PHP中的請求體,或者如何將參數編碼到python中的URL中。 –

回答

0

@Alex是正確的。

您正在發送正文中的數據,您應該使用PHP請求正文。下面的代碼將幫助你開始。

myPython.py

import requests, json 
url = 'http:/mywebsite.com/api/v1/myPhpFile.php' 
payload = {'firstname':'Olivia', 'city':'London', 'country':'UK'} 
r = requests.post(url, data=json.dumps(payload)) 

myPHP.php

<?php 
... 
class AddUser extends Abstractor { 
    public $log; 

    public function __construct() { 
     $this -> log = new MyLogPHP('../includes/debug.log.txt');  
    } 

    public function processJob($workerMsg) { 
     $this -> log -> info($workerMsg, 'W/ADD-USER'); 
    } 
} 

$addUser = new AddUser(); 
$entityBody = file_get_contents('php://input'); 
$response = $addUser -> processJob($entityBody);