Я пытаюсь связаться с внешним приложением (под управлением Laravel) через GuzzleHTTP, и данные отправляются и возвращаются правильно, но я возвращаю свои опубликованные аргументы обратно в ответ на тело - что делает json_decode () не работающимправильно.
Кто-нибудь знает, как это исправить?Я не могу ничего найти ни об этом, ни в документах GuzzleHTTP или Googling.
Полагаю, использование regex подойдет, но я бы хотел использовать менее хрупкий метод, если это возможно.
Ответ, который я получаю, выглядит следующим образом (кодируется в виде строки json):
string (39) "aUnid% 5B0% 5D = 20005 & aUnid% 5B1% 5D = 2008026" \ n "привет"Как вы можете видеть, он отправляет мои аргументы вместе с результатом (в данном случае это «привет»).
Код, используемый для публикации данных:
$http = new \GuzzleHttp\Client([
'base_uri' => $baseUrl
]);
$uri = "/api/deliveries/read";
$response = $http->request("POST", $uri, [
'headers' => [
'Authorization' => "Bearer " . $accessToken,
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
GuzzleHttp\RequestOptions::JSON => [
'kmUnids' => [
20005, 2008026
]
],
'timeout' => 5
]);
echo $response->getBody();
Код, используемый во внешнем приложении, выглядит следующим образом:
/**
* @param Request $request
* @return JsonResponse
*/
public function getData (Request $request) : JsonResponse
{
$request->validate([
'kmUnids' => 'required|min:1|array'
]);
/** @noinspection PhpUndefinedFieldInspection */
$ids = $request->kmUnids;
return \Response::json(
"hello"
);
}
Оба приложения работают под управлением Laravel (5.7) и используют Я использую Laravel Passport для связи OAUTH2.