2014-02-04 3 views
0

Мне нравится создавать небольшой интерфейс REST для подключения PYTHON с PHP. После нескольких часов гугла я закончил с почти скопировать & вставить код из нескольких дискуссионных досок:json Данные с запросами POST в Python не поступают

import requests 
import json 

url = 'http://spidercontrol.ilumiweb.local/helge/voltage' 

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} 
data = {'value': '7.4', 'decay_time': '300'} 

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

Это необходимо отправить данные в формате JSON через POST к данным url.This, где это отослано на:

<?php 

    echo "Method: \t".$_SERVER['REQUEST_METHOD']."\r\n"; 
    print_r(getallheaders()); 
    echo "Post:"; 
    print_r($_POST); 
    echo "Get:"; 
    print_r($_GET); 
    exit; 
?> 

но нет ничего в данных в $ _POST:

Method:   POST 
Array 
(
    [Host] => spidercontrol.ilumiweb.local 
    [Content-Length] => 37 
    [Content-type] => application/json 
    [Accept-Encoding] => gzip, deflate, compress 
    [Accept] => text/plain 
    [User-Agent] => python-requests/2.2.1 CPython/2.7.6 Windows/7 
) 
Post:Array 
(
) 
Get:Array 
(
) 

Если я использую один и тот же код, но удалить заголовки = заголовки информа но данные = данные работают хорошо. Кто-нибудь знал, почему?

ответ

1

В PHP $_POST содержатся только данные формы (или multipart/form-data).

Чтобы получить данные в формате JSON вы должны прочитать тело запроса непосредственно с помощью php://input вместо:

$json = json_decode(file_get_contents("php://input")); 
+0

Да, это работает! Большое спасибо!! – Marcus

Смежные вопросы