php curl 的一些常用的配置项
<?php
/**
* php curl 常用
* @var string
*/
$url = "http://localhost/curl.php";
$request_header = array(
// "Content-Type: application/xlm",
// "Content-Type: application/json",
//"Content-Type: application/x-www-form-urlencode",
//"Content-Type: multipart/form-data",
// "Content-Length: " . mb_strlen(),
);
// 请求体 可以附加文件
$form_data = array(
'username' => 'big_cat',
'password' => 'big_cat',
// 'file_1' => new \CURLFile('./file_path'),
// 'file_2' => new \CURLFile('./file_path'),
// 'file_3' => new \CURLFile('./file_path')
);
//构建 request form body
$form_data_urlencode = http_build_query($form_data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
/**
* baisc auth 认证
*/
// curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
// curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $request_header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //返回数据而不是直接输出
/**
* 如果传入的是数组则会将请求设为 Content-Type: application/json 的请求
* 后台是无法直接使用 $_POST 数据获取到数据的 需要配合 php://input
* 可以使用 http_build_query 将 key => val 构建成 key=val&key=val形式
*/
curl_setopt($curl, CURLOPT_POSTFIELDS, $form_data_urlencode); //表单数据
// $cookie_jar = tempnam("/path", "cookie_");
// curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar); // 把返回来的cookie信息保存在$cookie_jar文件中
// curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar); // 把返回来的cookie信息保存在$cookie_jar文件中
curl_setopt($curl, CURLOPT_HEADER, false); //是否获取头信息
curl_setopt($curl, CURLOPT_NOBODY, false); //是否不获取body体数据
/**
* 如何使用 https 请求也很简单 配合证书即可
*/
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 不校验https证书
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 不校验https证书
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1'); // 请求代理
curl_setopt($curl, CURLOPT_REFERER, "http://www.baidu.com"); // 请求referer
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // 是否可以重定向请求
curl_setopt($curl, CURLOPT_AUTOREFERER, true); // 重定向时自动更新 referer
curl_setopt($curl, CURLOPT_MAXREDIRS, 1); // 最大重定向次数 302跳转最多一次
curl_setopt($curl, CURLOPT_TIMEOUT, 5); // 超时时间 5s
$response = curl_exec($curl); //返回结果
//这里的错误是指请求连接建立的错误 而非你的请求错误或业务错误
if ($error_msg = curl_error($curl)) {// 错误信息
echo $error_msg;
} else {
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE); //请求结果状态码
$content_type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); //请求结果类型
}
curl_close($curl);
echo $response;