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请求