一个方法解决所有的 curl 请求的问题。
<?php
function curlTypeData( $method, $url, $data=false, $json=false )
{
$dataString = $json ? json_encode( $data ) : http_build_query( $data );
$ch = curl_init(); // 启动一个 CURL 请求
curl_setopt( $ch, CURLOPT_URL, $url ); // 确定要请求的地址
curl_setopt( $ch, CURLOPT_HEADER, 0); // 是否显示返回的 Header 区域内容
curl_setopt( $ch, CURLINFO_HEADER_OUT, true ); // 获取请求头信息
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
curl_setopt( $ch, CURLOPT_TIMEOUT, 5 ); // 请求过期时间
// curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
// curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
??? // 判断要执行的 CURL 的请求方式
??? $method = strtoupper( $method );
??? switch ( $method ) {
??????? case ‘GET‘:
??????????? curl_setopt( $ch, CURLOPT_HTTPGET, true ); ?????????// 设置请求方式为 GET
??????????? break;
??????? case ‘POST‘:
??????????? curl_setopt( $ch, CURLOPT_POST, true ); ????????????// 设置请求方式为 POST
??????????? curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString );// 设置请求体,提交数据包
??????????? break;
??????? case ‘PUT‘:
??????????? curl_setopt( $ch, CURLOPT_PUT, true ); ?????????????// 设置请求方式为 PUT
??????????? // curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, ‘PUT‘ );// 设置请求方式为 PUT ?
??????????? curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString );//设置请求体,提交数据包
??????????? break;
??????? case ‘DELETE‘:
??????????? curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, ‘DELETE‘ );// 设置请求方式为 DELETE
??????????? break; ????
??????? default:
??????????? echo "不存在请求方式";
??????????? die();
??? }
??? // 判断是否要求 json
??? if ( $json ) {
??????? curl_setopt($ch, CURLOPT_HTTPHEADER, array( ?
??????????? ‘Content-Type: application/json; charset=utf-8‘, ?
??????????? ‘Content-Length: ‘ . strlen($dataString))
??????? );
??? }
??? // 执行操作
??? $output = curl_exec( $ch ); // 执行操作
??? // $code = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); ???????// 获取返回的状态码
??? curl_close($ch); // 关闭CURL会话
??? echo $output;
}
?>
CURL 支持 GET、PUT、POST、DELETE请求
原文地址:https://www.cnblogs.com/laowenBlog/p/8616118.html