在网络上,主要是 https,我们使用 GET 请求来获取特定的资源表示。为了获取数据,使用了 GET 方法。 特别是在 api 和 WEB 抓取场景中,开发人员使用特定于语言的方法。我们使用 cU
在网络上,主要是 https,我们使用 GET
请求来获取特定的资源表示。为了获取数据,使用了 GET
方法。
特别是在 api 和 WEB 抓取场景中,开发人员使用特定于语言的方法。我们使用 cURL
函数来处理 PHP 中的 GET
请求。
cURL
库处理从初始化、连接设置和传输到资源返回的操作。为了实现所有这些操作,可以使用内置函数,例如 curl_close()
、curl_init()
到 curl_exec()
。
本文讨论了 cURL
GET
请求的不同用例以及实现它的相应函数。
curl_init()
和 curl_setopt()
在 php 中获取请求从另一个服务器或用户获取请求的典型格式涉及使用以下基本功能。
curl_init(); // initializes a cURL session
curl_setopt(); // changes the cURL session behavior with options
curl_exec(); // executes the started cURL session
curl_close(); // closes the cURL session and deletes the variable made by curl_init();
你将看到本文中的所有四个函数以及你将使用 cURL
库编写的大部分 GET
请求代码。
现在,对于一些示例用法,我们将为变量 $url
分配我们要从中获取请求的站点的 URL,并使用 curl_init()
函数启动 cURL
会话。之后,我们指定在指定 URL 上执行 cURL
传输的选项。
第一个 curl_setopt()
函数语句包含带有 $url
变量赋值的 URL to fetch
选项。第二个 curl_setopt()
函数语句包含以字符串形式返回传输
选项,包含一个布尔值。
<?php
$url = "Https://reqbin.com/echo";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>
上述 PHP 代码的输出如下。
cURL
与 API (JSON) 结合使用
通常,当与 API 交互时,数据响应通常是 jsON 并使用 cURL
函数,我们可以使用 curl_getinfo()
和 json_encode()
函数以属性值对和数组格式正确处理这些数据对象,其中。
在这里,我们将与演示 User
API 进行交互,使用 cURL
库获取 JSON 数据,并使用适当的函数对 JSON 文件进行编码。
初始化 URL 变量和 cURL
会话。
$url = 'https://jsonplaceholder.typicode.com/users';
// Sample example to get data.
$resource = curl_init($url);
设置 cURL
选项和信息变量。
curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($resource);
$info = curl_getinfo($resource);
$code = curl_getinfo($resource, CURLINFO_HTTP_CODE);
调试以检查响应状态代码(可选步骤),但你应该看到 200
。
echo $result.'<br>';
echo "<pre>";
print_r($info);
echo "</pre>";
// Get response status code
echo "<pre>";
print_r($code);
echo "</pre>";
关闭 cURL
会话以更好地管理资源。
curl_close($resource);
创建数组模板来存储通过 JSON 从 API 获取的数据。
// set_opt_array
$user = [
'name' => 'John Doe',
'username' => 'john',
'email' => 'john@example.com'
];
使用 curl_init()
和 curl_setopt_array()
使用所有重要选项处理从 URL 解析的 JSON 数据。
$resource = curl_init();
curl_setopt_array($resource, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['content-type: application/json'],
CURLOPT_POSTFIELDS => json_encode($user),
]);
分别使用 curl_exec()
和 curl_close()
函数执行初始化的 cURL
会话和关闭 cURL
会话并释放所有资源。但是,在 PHP 8.0.0 及更高版本中,curl_close()
函数无效。
$result = curl_exec($resource); // creates and returns result
curl_close($resource);
echo $result;
代码的输出将产生下面的 PHP 多维数组。
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv",
"address": {
"street": "Victor Plains",
"suite": "Suite 879",
"city": "Wisokyburgh",
"zipcode": "90566-7771",
"geo": {
"lat": "-43.9509",
"lng": "-34.4618"
}
},
"phone": "010-692-6593 x09125",
"website": "anastasia.net",
"company": {
"name": "Deckow-Crist",
"catchPhrase": "Proactive didactic contingency",
"bs": "synergize Scalable supply-chains"
}
},
{
"id": 3,
"name": "Clementine Bauch",
"username": "Samantha",
"email": "Nathan@yesenia.net",
"address": {
"street": "Douglas Extension",
"suite": "Suite 847",
"city": "McKenziehaven",
"zipcode": "59590-4157",
"geo": {
"lat": "-68.6102",
"lng": "-47.0653"
}
},
"phone": "1-463-123-4447",
"website": "ramiro.info",
"company": {
"name": "Romaguera-Jacobson",
"catchPhrase": "Face to face bifurcated interface",
"bs": "e-enable strategic applications"
}
},
....
]
--结束END--
本文标题: 使用 PHP 的 cURL GET 请求
本文链接: https://lsjlt.com/news/569100.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0