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? : /
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.
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.
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;
}
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;
});