web-dev-qa-db-fra.com

Requête cURL dans Laravel

J'ai du mal à faire cette demande de cURL à Laravel

curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json"   -X GET http://my.domain.com/test.php

J'ai essayé ceci:

$endpoint = "http://my.domain.com/test.php";

$client = new \GuzzleHttp\Client();

$response = $client->post($endpoint, [
                GuzzleHttp\RequestOptions::JSON => ['key1' => $id, 'key2' => 'Test'],
            ]);

$statusCode = $response->getStatusCode();

Mais je reçois une erreur Class 'App\Http\Controllers\GuzzleHttp\RequestOptions' not found

Aucune suggestion?

EDIT

J'ai besoin d'obtenir la réponse de l'API dans $response et ensuite le stocker dans la base de données ... Comment puis-je faire cela? : /

9
harunB10

Donnez l’essai à l’option de requête de Guzzle:

$endpoint = "http://my.domain.com/test.php";
$client = new \GuzzleHttp\Client();
$id = 5;
$value = "ABC";

$response = $client->request('GET', $endpoint, ['query' => [
    'key1' => '$id', 
    'key2' => 'Test'
]]);

// url will be: http://my.domain.com/test.php?key1=5&key2=ABC;

$statusCode = $response->getStatusCode();
$content = $response->getBody();

// or when your server returns json
// $content = json_decode($response->getBody(), true);

J'utilise cette option pour créer mes requêtes d'obtention avec guzzle. En combinaison avec json_decode ($ json_values, true), vous pouvez transformer json en tableau php.

16
Brotzka

Vous pouvez toujours utiliser le cURL natif dans PHP si vous rencontrez des difficultés pour utiliser guzzlehttp:

façon native PHP

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "SOME_URL_HERE".$method_request);
// SSL important
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$output = curl_exec($ch);
curl_close($ch);


$this - > response['response'] = json_decode($output);

Parfois, cette solution est toujours meilleure et plus simple que l’utilisation de la bibliothèque attachée dans le cadre Laravel. Mais votre choix demeure puisque vous êtes en charge du développement de votre projet.

6
Kenneth Sunday

Utilisez ceci comme référence. J'ai réussi à faire une demande GET curl avec ce code

public function sendSms($mobile)
{
  $message ='Your message';
  $url = 'www.your-domain.com/api.php?to='.$mobile.'&text='.$message;

     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

     $response = curl_exec ($ch);
     $err = curl_error($ch);  //if you need
     curl_close ($ch);
     return $response;
}
2
Bishal Jung Chettri

En utilisant Laravel, vous pouvez écrire quelque chose comme ceci dans votre fichier de routes si vous utilisez WP et que vous vous sentez aventureux et que vous ne voulez pas utiliser la gueule ou laravel = paquet curl.

Route::get('/curl',function() {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://example.net/wp-login.php');

// save cookies to 'public/cookie.txt' you can change this later.
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

curl_setopt($ch, CURLOPT_POSTFIELDS, ['log'=>'<name>','pwd'=>'<pass>']);

curl_exec($ch);

// supply cookie with request
curl_setopt($ch, CURLOPT_COOKIE, 'cookie.txt');

// the url you would like to visit
curl_setopt($ch, CURLOPT_URL, 'https://example.net/profile/');

$content = curl_exec($ch);

curl_close($ch);

// webpage will be displayed in your browser
return;

});
0
Bruce Tong