php curl 实现get方法请求和多维数据传送
使用 php 的 curl 类库实现 get 方法,要注意请求的 url 有长度的限制,浏览器(ie、google chrome、firefox等)、服务器(nginx、iis、apache等)的限制各不相同,url 的参数过长时可能出现414状态吗:HTTP Error 414. The request URL is too long。提交比较大量的数据,可以考虑使用 post 方法。
get 方法的实现
function get($url, $headers)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true, // 如果成功只将结果返回,不自动输出任何内容
CURLOPT_TIMEOUT => 0, // 设置curl允许执行的最长秒数
));
// 设置请求头
if (!empty($headers)) {
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
$response = curl_exec($curl);
$errno = curl_errno($curl);
if ($errno) {
return false;
}
curl_close($curl);
return $response;
}
传递多维数组
构建 url 的请求参数,使用 http_build_query 或者 urlencode 对键值对编码,然后拼接到url上。
$arr = [
"name" => "用户名",
"password" => "密码",
"arr[0][one]" => 1,
"arr[0][two]" => 2,
"arr[1][three]" => 3,
"arr[1][four]" => 4
];
$params = http_build_query($arr);
$url = "http://localhost/response.php?" . $params;
$headers = ["User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"];
get($url, $headers);
response.php 打印 print_r($_GET);
Array
(
[name] => 用户名
[password] => 密码
[arr] => Array
(
[0] => Array
(
[one] => 1
[two] => 2
)
[1] => Array
(
[three] => 3
[four] => 4
)
)
)
post 的实现可以参考
php curl实现application-x-www-form-urlencoded提交
非特殊说明,本网站所有文章均为原创。如若转载,请注明出处:https://mip.cpming.top/p/php-curl-get