php curl HTTP请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php curl HTTP请求相关的知识,希望对你有一定的参考价值。
<?php
/**
* curl HTTP请求
* @param [type] $url 网址
* @param string $opt 请求参数
* @param [type] &$header 响应头信息
* @param boolean $redirect 自动重定向
* @param boolean $ssl 验证https证书
* @return [type] 响应内容
*/
function httpRequest($url, $opt = 'GET', &$code = null, &$header = null, $redirect = true, $ssl = false)
{
// 初始化
$ch = curl_init($url);
// 配置设置
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $ssl);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $redirect);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # 返回结果
curl_setopt($ch, CURLOPT_HEADER, true); # 显示头信息
if (is_array($opt)) {
// 转小写
$opt = array_change_key_case($opt, CASE_LOWER);
// POST
if (isset($opt['type']) && strtoupper($opt['type']) == 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, (isset($opt['data']) ? $opt['data'] : ''));
}
// User-Agent
if (array_key_exists('ua', $opt)) {
curl_setopt($ch, CURLOPT_USERAGENT, $opt['ua']);
}
// Header
if (array_key_exists('header', $opt)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, (array) $opt['header']);
}
// Cookie
if (array_key_exists('cookie', $opt)) {
curl_setopt($ch, CURLOPT_COOKIE, $opt['cookie']);
}
// Referer
if (array_key_exists('referer', $opt)) {
curl_setopt($ch, CURLOPT_REFERER, $opt['referer']);
}
} else {
// 仅POST
if (strtoupper((string) $opt) == 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
}
}
$result = curl_exec($ch);
if (curl_errno($ch)) {
$result = curl_error($ch);
} else {
// 取出状态码
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 获取头长度
$length = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
// 取出头信息
$header = substr($result, 0, $length);
// 去掉头信息
$result = substr($result, $length);
}
// 释放
curl_close($ch);
return $result;
}
以上是关于php curl HTTP请求的主要内容,如果未能解决你的问题,请参考以下文章
使用PHP中的curl发送请求
php curl HTTP请求
php之curl实现http请求(支持GET和POST)
转:PHP中的使用curl发送请求(GET请求和POST请求)
PHP如何打印出curl 模块交互的 http 请求与响应 header?
浅析php curl_multi_*系列函数进行批量http请求