Я пытаюсь отправить данные с помощью самодельного API Flask.
это мой код API:
def add_message(uuid):
content = request.json
try:
print(content['mytext'])
except:print(content)
return jsonify({"uuid":uuid})
if __name__ == '__main__':
app.run(debug=True)
если я отправляю данные через python, все работает:
res = requests.get('https://**.pythonanywhere.com/123', json={"mytext":"test"})
if res.ok:
print( res.json())
но если я использую php:
$host = "https://**.pythonanywhere.com";
$url = $host.'/1237R4';
echo http($url,json_encode([
"mytext"=>"python rules"]),'post');
function http($url,$data=[],$method='get'){
$ch = curl_init();
$chOpts = [
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_HEADER=>false,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_CONNECTTIMEOUT =>8,
CURLOPT_TIMEOUT => 16,
CURLOPT_HTTPHEADER,[
'Content-Type: application/json'
]
];
if($method=='post'){
$chOpts[CURLOPT_POST]=true;
$chOpts[CURLOPT_POSTFIELDS]=$data;
$chOpts[CURLOPT_URL]=$url;
}
else{
$url.='?'.is_array($data)?http_build_query($data):$data;
$chOpts[CURLOPT_URL]=$url;
}
echo 'Request: '.$method.'['.$url.']'."\n";
print_r($data);
curl_setopt_array($ch, $chOpts);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
я получил следующую ошибку в журналах:
[b'{"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}']
Как заставить это работать на php?
$req = $http({method: 'get',url: "https://**.pythonanywhere.com/123",params: {mytext: "test"});
теперь mytext
стал строкой, вы не передавали его как строку.
Других решений пока нет …