笔记:Curl 简单 post + get
日常开发中,用习惯了 guzzlehttp/guzzle 包,不得不说是真的好用,推荐大家使用。
命令:composer require guzzlehttp/guzzle 链接
然而最近在项目中却惊讶的发现,guzzle包是3.*版本,用起来不是很友好。只能自己简单的写一下post,get了。
附代码:
<?php
namespace App\Service;
class CurlService
{
/**
* post 数据
*
* @param $url
* @param $postData
* @param int $timeout
* @return mixed
*/
public static function post($url, $postData, $timeout = 10)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return json_decode($data, true);
}
/**
* Post json 数据
*
* @param $url | url地址
* @param $postData | array
* @param $timeout | int
* @return mixed
*/
public static function postJson($url, $postData, $timeout = 10) {
$jsonStr = json_encode($postData, JSON_UNESCAPED_UNICODE);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = [
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonStr),
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return json_decode($data, true);
}
/**
* Get Url 数据
*
* @param $url
* @param int $timeout
* @param array $headers
* @return bool|string
*/
public static function get($url, $timeout = 10, $headers = [])
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
if ($headers) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
}
Get常用处理:
//处理Get请求参数
$params = [];
$queryStr = http_build_query($params);
//header的基本使用
$headers[] = 'Content-Type: application/json';
$headers[] = "Authorization: Basic " . base64_encode("$this->username:$this->password");
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: