2014-02-05 3 views
0

몇 분마다 JSON을 생성하는 내부 서버가 있습니다. 이 데이터를 외부 서버에 전달해야 데이터를 조작 한 다음 웹 인터페이스에 표시 할 수 있습니다. 여기 PHP 스크립트로 데이터를 전송 내 파이썬입니다 : 여기PYTHON에서 PHP로 POST 데이터를 보낸 후 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() 

및 것은

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

좋은 및 응답 상태 (200) 내 파이썬 스크립트의 반환은 반환 데이터

를받을 수 내 PHP입니다 내 JSON. 하지만 PHP 측에서는이 정보를 조작하고 웹 클라이언트를 가져올 수 있기를 원합니다. 그러나 비록 내가 말하더라도

print_r ($objJson); 

내가보기에는 .php 페이지를 방문 할 때 내 개체가 인쇄되지 않는 것으로 보입니다. file :: input은 읽기만 끝낼 것이기 때문에 데이터가 없어 졌다고 생각하십니까?

+0

무엇이 인쇄됩니까? 'Array()'또는 아무것도? 'strlen ($ data)'는 무엇을 인쇄합니까? – vladkras

+0

strlen ($ data) print 2512 – Jay

+0

흠,'print_r ($ data)'는 무엇을 인쇄합니까? – vladkras

답변

0

그냥 file_get_contents()

를 사용하지 마십시오 : 당신을 $ _POST 배열을 인쇄하여 모든 POST 데이터를 볼 수 있습니다 거기에 PHP 배열에 익숙하지 않은 경우. 여기

+0

ok 그래서 나는 해보았습니다. ($ _ POST); $ objJson = json_decode ("$ _ POST"); print_r ($ objJson); – Jay

+0

하지만 Array() 만 제공합니다. – Jay

+0

if ($ _ POST) {echo "WE가 데이터를 얻었습니다"; } 아무것도 반환하지 않습니다. 실제로 $ _POST가 전송되고 있습니다. – Jay

0

PHP로 데이터를 전송하는 동안 JSON 데이터가 포함 된 명명 된 매개 변수를 사용하고 PHP에서 $_POST 수퍼 글로벌 배열을 사용하려고 시도하십시오 (분명히 cli가 아닌 cgi 또는 유사한 인터페이스를 통해 연결하기 때문).

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

print_r부터 어디로 가야 당신을 도움이 될 것입니다 :

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; 
내 클라이언트 파일에 대한 단지 아약스 요청에서 다음

및 클라이언트 측에서 그것을 구문 분석을.

결국 나는 이것을 재고해야하지만 지금은 효과가 있습니다. 또한 새 데이터가 들어올 때마다 new.json 파일을 다시 작성하거나 JavaScript 성공 콜백에서 이전 데이터를 구문 분석해야합니다. 당신이하고 싶은 일에 달려 있습니다.

관련 문제