• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wysyłanie do serwera w Pythonie tablicy POSTem

Object Storage Arubacloud
0 głosów
571 wizyt
pytanie zadane 20 listopada 2017 w Python przez Muhin Gaduła (4,120 p.)
zamknięte 20 listopada 2017 przez Muhin

Cześć,

Piszę serwer w Pythonie do którego wysyłam PHPem przez POST tablicę, ale z nieznanych mi przyczyn Python ciągle zwraca kod błędu 400. Dla ścisłości serwer w Pythonie piszę w oparciu o framework Flask.

Kod w js którym tablica zaczyna całą swoją drogę:

this.get_data = function(callback){
	var options = {
		'url': 'test',
		'data': {
			'x':'1',
			y':'2',
		},
	}
	var data = callback("scripts/indirect_engine.php?t_step=" + unix_time(), options);
	data.then(data => alert(data));
};

Kod w phpie:

$url = 'http://127.0.0.1:9090/'.$_POST['url'];
$data = array('data' => $_POST);

$options = array(
	'http' => array(
	      'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
		method'  => 'POST',
		'content' => http_build_query($data)
	 )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

if($result === false){ 
	echo json_encode('Błąd..');
}else{
echo json_encode($result);

Kod w pythonie:

@app.route('/test', methods = ['POST'])
def test():
	test_var = request.form['data'];
	return 'Odpowiedź od serverwa w Pythonie' + test_var['x']

Dzięki za każdą podpowiedź.

komentarz zamknięcia: Wystarczy użyć funkcji to_dict.
komentarz 20 listopada 2017 przez Michał Kazula Pasjonat (19,540 p.)
A spróbuj wysłać dane AJAX'em.

Z drugiej strony adres na jaki powinieneś wysyłać to chyba: http://127.0.0.1:9090/test
komentarz 20 listopada 2017 przez Muhin Gaduła (4,120 p.)

Dane wysyłam ajaxem, które jest ukryty w tym callbacku. Jeśli chodzi o adres, to wszystko jest OK. Dowodem tego jest to, że w konsoli pythona po zapytaniu dostaję:

127.0.0.1 - - [20/Nov/2017 14:16:45] "POST /test HTTP/1.0" 400 -

 

1 odpowiedź

0 głosów
odpowiedź 20 listopada 2017 przez Muhin Gaduła (4,120 p.)

Dodam jeszcze, że jeśli w PHP zmienię w $data na coś takiego:
 

$data = array('test' => 'OK');



to wtedy wszystko działa tak jak powinno.

Podobne pytania

0 głosów
1 odpowiedź 447 wizyt
pytanie zadane 9 października 2016 w JavaScript przez elik1028 Użytkownik (950 p.)
0 głosów
1 odpowiedź 163 wizyt
+1 głos
3 odpowiedzi 139 wizyt
pytanie zadane 26 września 2020 w PHP przez Marak123 Stary wyjadacz (11,190 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...