Не получается отправить запрос к API

Вообщем вот в чем дело, мне нужно подключиться к API Мой склад. Мне посоветовали для подключения воспользоваться библиотекой GuzzleHttp. Я установил эту библиотеку и попробовал подключаться к другим API , например openweather и все работало. И когда я уже перешел к подключению API Мой склад появилась проблема. А именно в браузере пишет Страница недоступна HTTP ERROR 500 и в консоли

Failed to load resource: the server responded with a status of 500 () и crbug/1173575, non-JS module files deprecated.

Вот мой код

<?php 

use GuzzleHttp\Client;
require 'vendor/autoload.php';
 
    //'base_uri' => 'https://online.moysklad.ru/api/remap/1.2/security/token', // базовый uri
    //'Authorization' => "Basic " . base64_encode("inter".':'."qwe-asd")


$client = new Client([
    'base_uri' => 'https://online.moysklad.ru/api/remap/1.2/security/token',
    'timeout' => 2.0
]);
$params = [
  'Authorization' => "Basic" . base64_encode("login".':'."pass")
];
$response = $client ->request('GET',$params); //POST тоже пробовал


echo $response-> getStatusCode(),"<br>";

$body = $response-> getBody();

echo $body->getContents(),"<br>";



echo "<pre>";
print_r($response);

Подскажите пожалуйста, что я не так делаю. Буду очень благодарен. Подключаться пробовал по лог:пароль и по токену.

php error

[01-Dec-2021 16:51:49 UTC] PHP Fatal error: Uncaught >InvalidArgumentException: URI must be a string or UriInterface in >D:\Programs\MAMP\htdocs\vendor\guzzlehttp\psr7\src\Utils.php:426 Stack trace: #0 D:\Programs\MAMP\htdocs\vendor\guzzlehttp\psr7\src\functions.php(41): >GuzzleHttp\Psr7\Utils::uriFor(Array) #1 D:\Programs\MAMP\htdocs\vendor\guzzlehttp\guzzle\src\Client.php(154): >GuzzleHttp\Psr7\uri_for(Array) #2 D:\Programs\MAMP\htdocs\vendor\guzzlehttp\guzzle\src\Client.php(181): >GuzzleHttp\Client->requestAsync('GET', Array, Array) #3 D:\Programs\MAMP\htdocs\sklad.php(17): GuzzleHttp\Client->request('GET', >Array) #4 {main} thrown in D:\Programs\MAMP\htdocs\vendor\guzzlehttp\psr7\src\Utils.php on >line 426


Ответы (1 шт):

Автор решения: Simon

Вы извините, но проблема высосана из пальца. Я понимаю что Вам нужно передать только логин и пароль. Здесь не так, как раз то, что вторым параметром должна быть все равно строка, так уж написано и так это работает и не так именно то, что Вы передаете массив вместо строки, как я уже и писал.

Можно же все привести к нормальному виду, base_uri на то и base, в документации же написано: Базовый URI клиента, объединенный в относительные URI. Может быть строкой или экземпляром UriInterface. Когда относительный URI предоставляется клиенту, клиент объединяет базовый URI с относительным URI. Следственно можно скорректировать Ваш код таким образом, чтобы сделать его более универсальным и иметь возможность отправлять запросы на разные эндпойнты:

$client = new Client([
    'base_uri' => 'https://online.moysklad.ru/api/remap/1.2/',
    'timeout' => 2.0
]);

$params = [
  'auth' => ['login', 'pass']
];

$response = $client->request('POST', '/security/token', $params);

и это решит Вашу проблему. Согласно документации мой склад, это должен быть POST запрос

И Authorization параметры можно передать иначе документация.

→ Ссылка