2 votes

Envoyer une requête REST https en PHP avec des en-têtes

Je dois envoyer une demande à une api avec des en-têtes d'authentification

Voici ce que j'ai essayé jusqu'à présent

$client = new \yii\httpclient\Client(['baseUrl' => 'https://lien']);
$response = $client->createRequest()
            ->setMethod('GET')
            ->addHeaders(['authorization' => 'jeton'])
            ->send();
var_dump($response);
// autres
$client = new \GuzzleHttp\Client();
$headers = ['authorization' => 'jeton'];
$body = 'Bonjour!';
$request = new \GuzzleHttp\Psr7\Request('GET', 'https://lien', $headers, $body);
$response = $client->send($request, ['timeout' => 2]);
$curl = new \linslin\yii2\curl\Curl();

$response = $curl->setHeaders($headers)->get('lien', $headers);
var_dump($response);

// autres
$opts = [
    "http" => [
        "method" => "GET",
        "header" => "authorization:jeton\r\n",
    ],
];

$context = stream_context_create($opts);

$file = file_get_contents('lien', false, $context);
var_dump($file);

// autres
$ch = curl_init();
$headers = ["authorization:jeton"];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); # en-têtes personnalisés, voir ci-dessus
$result = curl_exec($ch); # exécuter!
// curl_close($ch);
var_dump($result);

ps: Je travaille avec le framework yii2

alors est-ce que quelqu'un peut me dire ce qui ne va pas?

{
    "client": {
        "baseUrl": null,
        "formatters": {
            "urlencoded": {
                "encodingType": 1,
                "charset": null
            }
        },
        "parsers": [],
        "requestConfig": [],
        "responseConfig": {
            "format": "json"
        },
        "contentLoggingMaxSize": 2000
    }
}

Voilà l'erreur que je reçois. Je n'ai pas de détails concernant la connexion...

0voto

leila Points 128

Cela a fonctionné pour moi

$client = new \yii\httpclient\Client(['responseConfig' => [
            'format' => \yii\httpclient\Client::FORMAT_JSON,
        ]]);
        $response = $client->createRequest()
            ->setHeaders(['authorization' => 'f52d76cc976e0e1b6aa81c926cbc33823b5e5983', 'content-type' => 'application/json'])
            ->setMethod('GET')
            ->setUrl('https://preprod-next-ngcvin5.ngc-data.fr/api/v1/vehicules/CR-157-NB')
            ->send();

        return $response->data;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X