Laravel 中的 cURL 请求

2022-08-30 14:25:10

我正在努力在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


答案 1

尝试使用 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' => $value,
]]);

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

我使用此选项来构建带有 guzzle 的 get 请求。结合json_decode($json_values,true),您可以将json转换为php数组。


答案 2

如果您在使用gzzlehttp时遇到问题,您仍然可以在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 框架中附加的库更好、更简单。但仍然是你的选择,因为你持有你的项目的开发。


推荐