I'm doing an internal API across my servers. I want to transfer some JSON strings from PHP to Python.
On Python, I have this code:
from flask import request
from flask import jsonify
...
@app.route('/database/<string:token>', methods=['POST', 'GET'])
def sync(token):
if token not in VALID_TOKENS:
...
json = request.get_json(force=True)
...
...
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=False, port=6000)
On PHP-side, I have:
$payload = $datafromdatabase;
$payload = json_encode($payload);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($payload))
);
$result = curl_exec($ch);
But Flask returns me, at every request:
127.0.0.1 - - [19/Feb/2017 20:08:00] "POST /database/token HTTP/1.1" 400 -
P.S: On Python, request.data
and request.args
are both None
.
P.P.S.: Using requests.post(url, json=data)
in Python works.