web-dev-qa-db-ja.com

Laravelのc​​URLリクエスト

私はLaravelでこのcURLリクエストを行うのに苦労しています

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

私はこれを試しています:

$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();

しかし、エラーClass 'App\Http\Controllers\GuzzleHttp\RequestOptions' not foundが発生します

助言がありますか?

編集

APIからの応答を$responseで取得してから、DBに保存する必要があります...これを行うにはどうすればよいですか? :/

9
harunB10

Guzzleからquery-optionを試してください:

$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);

このオプションを使用して、get-requestsをguzzleで作成します。 json_decode($ json_values、true)と組み合わせて、jsonをphp-arrayに変換できます。

16
Brotzka

Guzzlehttpの使用に問題がある場合は、PHPでネイティブcURLを引き続き使用できます。

ネイティブ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);

時々、このソリューションは、Laravelフレームワークにアタッチされたライブラリを使用するよりも優れていて簡単です。ただし、プロジェクトの開発を保持しているので、引き続き選択できます。

6
Kenneth Sunday

これを参考にしてください。このコードでcurl GETリクエストを成功させました

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

Laravelを使用すると、WPを使用していて、冒険心があり、guzzleやlaravel curlパッケージを使用したくない場合、routesファイルに次のように記述できます。

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