Несколько вопросов:
"UnsupportedApiVersion [Message] => Запрошенный ресурс с версией API« 1 »не поддерживает HTTP-метод« GET »
Это указывает на проблему с несовпадающим запросом - когда вместо POST был отправлен GET, что указывает либо на проблему с базовым механизмом, который использует Guzzle (cURL
, поток PHP или пользовательский), либо чем-то еще в запросе, который заставляет Guzzle сделать GET. Вы проверили, действительно ли это происходит, и API точно сообщает? Вы можете либо var_dump($res);
проверить, либо сформировать запрос в виде отдельной переменной с помощью $req = client->createRequest('post',...)
, а затем проверить $req->getMethod()
после отправки запроса на основе этого StackOverflow QA .
Глядя на эту ветку , похоже, что перенаправления являются частой причиной этого события - например, если ваш URL в вашем PHP отличается от того, который работает в Postman, и он в нем есть опечатка. Вы также можете попробовать отключить перенаправления, просто установив параметр с помощью Guzzle :
.
$res = $client->post($this->url.'auth/signin', [
'json' => [
'ApplicationID' => xxxxxx,
'DeveloperID' => xxxxxx,
'Username' => xxxxxx,
'Password' => xxxxxx
],
'allow_redirects' => false
]);
В качестве примечания, смысл base_uri
- сделать так, чтобы все, что вам нужно было сделать, это указать путь при вызове метода запроса. Поскольку вы уже определили base_uri как $this->url
, вы можете включить это:
$res = $client->post($this->url.'auth/signin', ...
в
$res = $client->post('auth/signin', ...
Кроме того, будьте осторожны с вышесказанным, так как на самом деле это простой способ формирования неверно сформированных URL - тем более, что вы не указали значение $this->url
в вашем коде.
Также вы упомянули попытку запроса с помощью form_params
. При этом обязательно поменяйте местами заголовок Content-Type
, например: установить на application/x-www-form-urlencoded
.