J'essaye de remplir une base de données avec les résultats obtenus par mon script python. J'envoie les données gzippées dans la requête POST. Un script PHP agit au milieu comme des services Web et a besoin d'extraire les données gzip et d'obtenir 'sql-query' et d'effectuer le processus supplémentaire.Comment extraire une requête POST gzip en PHP envoyé via Python
C'est ce que je suis en train de faire sur le côté Python:
Sending a POST request using urllib:
# Data to be sent in POST request, it can be a SQL UPDATE/INSERT or SELECT
dictheaders = {'sql': "UPDATE 'logs' SET 'some_value' = Failed"}
# Encode the data
data = urllib.urlencode(dictheaders)
# Gzip compress the encoded data
IO = StringIO.StringIO()
gzip_data = gzip.GzipFile(fileobj=IO, mode='w')
gzip_data.write(data)
gzip_data.close()
gzip_data = IO.getvalue()
# This is the POST request being sent to a PHP web services file which
# needs to extract the gzipped query and then execute the query on SQL
f = urllib2.urlopen('http://x.x.x.x/example.php', gzip_data)
Voici les changements que j'ai essayé sur le côté PHP:
$postdata = file_get_contents("php://input");
$a = gzinflate(substr(substr($postdata, 10), 0, -8));
$sql = $a['sql'];
Le code ci-dessus ne semble pas être compatible avec mon code Python. Est-ce la bonne façon d'extraire la requête gzip POST en PHP?
La plupart des serveurs Web gèrent eux-mêmes la compression. Du côté de Python: http://stackoverflow.com/a/3947241/539465 –
Vous rendez-vous compte que vous essayez d'envoyer l'objet 'set' en tant qu'en-tête (' dictheaders = {'sql', 'SELECT * FROM employees'} 'est un' set')? – vaultah