Я устанавливаю приложение Angular с PHP Backend. тело генерируется в моем приложении. Но если я хочу отправить тело в мой PHP-файл через http и file_get_contents ('php: // input');я получаю ошибку HTTP. если я vardump $ json, я получаю пустую строку. Body Query работает хорошо, если я делаю это вручную через $asticBody = '{}' в файле PHP. Это мой http.service.ts
elastic_url: '../elastic.php'
Search(body: any): Observable<any> {
const proxyBody = {
body: body
};
return this.http.post('/path to elastic.php', proxyBody, {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
});
}
astic.php
<?php
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
// $elasticBody = $request;
// $elasticBody = $data['body'];
header('Content-type: application/json');
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Headers: X-Requested-With, content-type, access-control-allow-origin, access-control-allow-methods, access-control-allow-headers');
$ch = curl_init();
$method = "POST";
$url = "http://localhost:9210/fud_fret/_search";
$elasticBody = '{
"query": {
"multi_match" : {
"query" : "test",
"fields" : ["136_title"]
}
}
}';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PORT, 9210);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $elasticBody);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
Я обнаружил следующую ошибку PHP в моем журнале: Предупреждение: Недопустимое смещение строки 'body' в / Applications /MAMP / htdocs / WP /astic.php в строке 46
значение тела от angular - это [объект Object]. возможно я сделал неправильное преобразование в своем PHP-файле.