在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