在thinkphp中发送http请求

我这个是带header头的请求,因为在header头中需要加入账号密码请求

  public static function sendRequest($method, $url, $data = null, $headers = [])
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        if ($method === 'POST' || $method === 'PUT' || $method === 'PATCH') {
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
        } else {
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
        }
        $defaultHeaders = [
            'Content-Type' => 'application/json; charset=utf-8'
        ];

        // 合并默认请求头和自定义请求头
        $allHeaders = array_merge($defaultHeaders, $headers);
        $headerArray = [];
        foreach ($allHeaders as $key => $value) {
            $headerArray[] = "$key: $value";
        }

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
//        if (!empty($headers)) {
//            $headerArray = [];
//            foreach ($headers as $key => $value) {
//                $headerArray[] = "$key: $value";
//            }
//            curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
//        }
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        if ($response === false) {
            $error = curl_error($ch);
            curl_close($ch);
            return ['error' => $error, 'http_code' => null];
        } else {
            curl_close($ch);
            $data = json_decode($response, true);
            return ['data' => $data, 'http_code' => $httpCode];
        }
    }

参数说明:

$method     请求方法POST/PUT/GET/PATCH
$url        请求地址
$$data      请求数据   这里注意,请自行转换json  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值