【PHP】发送HTTP请求时参数快速组装

发布时间:2023年12月26日

1.POST、GET参数组装


  • ?利用compact、http_build_query函数
        // post的数组体
        $a = 1;
        $b = 2;
        $c = $a + $b;
        $array = compact('a','b','c'); // 组合请求参数
        print_r($array);
        
        // get的url组装
        $paramsStr = http_build_query($array);
        print_r($paramsStr);
  • 打印结果

2.一个请求示例


使用guzzle

<?php

namespace app\common\library;

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

class GuzzleHttpRequest
{
    public static function httpRequest($url, $dataStr = "", $isPost = 0, $headers = [])
    {
        try {
            $client = new Client();

            $options = [
                'headers' => [
                    'User-Agent' => 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
                ],
                'connect_timeout' => 30,
                'timeout' => 30,
            ];

            // 添加自定义请求头
            if (!empty($headers)) {
                $options['headers'] = array_merge($options['headers'], $headers);
            }

            // 跳过证书检查
            if (strtolower(mb_substr($url, 0, 8, "utf-8")) == "https://") {
                $options['verify'] = false; // 跳过证书检查
            }

            if ($isPost) {
                $options['form_params'] = $dataStr;
                $response = $client->post($url, $options);
            } else {
                // GET 请求
                $options['query'] = $dataStr;
                $response = $client->get($url, $options);
            }
            return $response->getBody()->getContents();
        } catch (GuzzleException $e) {
            error_log($e->getMessage().'URL: '. $url.'Data: '. json_encode($dataStr));
            // 处理异常
            throw $e;
        }
    }
}

// post
$a = 1;
$b = 2;
$c = $a + $b;
$params = compact('a','b','c'); // 组合请求参数
$result = GuzzleHttpRequest::httpRequest(self::API_URL['idcard_query'], $params, 1);

// get
$paramsStr = http_build_query($params);
$result = GuzzleHttpRequest::httpRequest(self::API_URL['idcard_query'], $params);

文章来源:https://blog.csdn.net/q8688/article/details/135227783
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。