GuzzleHTTP Сообщение тела запроса содержит запрос - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь связаться с внешним приложением (под управлением 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.

1 Ответ

0 голосов
/ 19 октября 2018

Вы должны декодировать возвращаемый результат следующим образом:

$ return_result = json_decode ($ response-> getBody ());$ data = $ res-> data;

...