请求的封装
php">
$res = Http::post($this->baseUrl . $url,$params,[CURLOPT_HTTPHEADER => ['Content-Type: application/json','Content-Length: ' . strlen($params),],]);<?php
namespace fast;
class Http
{public static function post($url, $params = [], $options = []) {$req = self::sendRequest($url, $params, 'POST', $options);return $req['ret'] ? $req['msg'] : '';}public static function get($url, $params = [], $options = []) {$req = self::sendRequest($url, $params, 'GET', $options);return $req['ret'] ? $req['msg'] : '';}public static function postJson($url, $params = [], $options = []) {is_array($params) && $params = json_encode($params, JSON_UNESCAPED_UNICODE);$req = self::sendRequest($url, $params, 'POST', array_merge_replace([CURLOPT_HTTPHEADER => ['Content-Type: application/json','Content-Length: ' . strlen($params),],], $options));return $req['ret'] ? $req['msg'] : '';}public static function sendRequest($url, $params = [], $method = 'POST', $options = []) {$method = strtoupper($method);$protocol = substr($url, 0, 5);if (stripos($url, '/product/collectorUploadImg') !== false || stripos($url, '/assemblers/upload') !== false || stripos($url, '/product/tinymecFileAllow') !== false|| stripos($url, '/refund/uploadFile') !== false || stripos($url, '/invoice/uploadPdfLimitTwoMega') !== false|| stripos($url, '/base/upload/uploadImgLimitForApi') !== false || stripos($url, '/item/seller/itemPublish/publishItemForApi') !== false|| stripos($url, '/product/contractUploadImg') !== false) {$query_string = $params;} else {$query_string = is_array($params) ? http_build_query($params) : $params;}$ch = curl_init();$defaults = [];if ('GET' == $method) {$geturl = $query_string ? $url . (stripos($url, "?") !== FALSE ? "&" : "?") . $query_string : $url;$defaults[CURLOPT_URL] = $geturl;} else {$defaults[CURLOPT_URL] = $url;if ($method == 'POST') {$defaults[CURLOPT_POST] = 1;} else {$defaults[CURLOPT_CUSTOMREQUEST] = $method;}$defaults[CURLOPT_POSTFIELDS] = $query_string;}$defaults[CURLOPT_HEADER] = FALSE;$defaults[CURLOPT_USERAGENT] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36";$defaults[CURLOPT_FOLLOWLOCATION] = TRUE;$defaults[CURLOPT_RETURNTRANSFER] = TRUE;$defaults[CURLOPT_CONNECTTIMEOUT] = 3;$defaults[CURLOPT_TIMEOUT] = 3000;curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));if ('https' == $protocol) {$defaults[CURLOPT_SSL_VERIFYPEER] = FALSE;$defaults[CURLOPT_SSL_VERIFYHOST] = FALSE;}curl_setopt_array($ch, (array) $options + $defaults);$ret = curl_exec($ch);$err = curl_error($ch);if (FALSE === $ret || !empty($err)) {$errno = curl_errno($ch);$info = curl_getinfo($ch);curl_close($ch);return ['ret'=>FALSE, 'errno'=>$errno, 'msg'=>$err, 'info'=>$info];}curl_close($ch);return ['ret'=>TRUE, 'msg'=>$ret];}public static function sendAsyncRequest($url, $params = [], $method = 'POST') {$method = strtoupper($method);$method = $method == 'POST' ? 'POST' : 'GET';if (is_array($params)) {$post_params = [];foreach ($params as $k => &$v) {if (is_array($v))$v = implode(',', $v);$post_params[] = $k . '=' . urlencode($v);}$post_string = implode('&', $post_params);} else {$post_string = $params;}$parts = parse_url($url);if ($method == 'GET' && $post_string) {$parts['query'] = isset($parts['query']) ? $parts['query'] . '&' . $post_string : $post_string;$post_string = '';}$parts['query'] = isset($parts['query']) && $parts['query'] ? '?' . $parts['query'] : '';$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 3);if (!$fp)return FALSE;stream_set_timeout($fp, 3);$out = "{$method} {$parts['path']}{$parts['query']} HTTP/1.1\r\n";$out.= "Host: {$parts['host']}\r\n";$out.= "Content-Type: application/x-www-form-urlencoded\r\n";$out.= "Content-Length: " . strlen($post_string) . "\r\n";$out.= "Connection: Close\r\n\r\n";if ($post_string !== '')$out .= $post_string;fwrite($fp, $out);fclose($fp);return TRUE;}public static function sendToBrowser($file, $delaftersend = true, $exitaftersend = true) {if (file_exists($file) && is_readable($file)) {header('Content-Description: File Transfer');header('Content-Type: application/octet-stream');header('Content-Disposition: attachment;filename = ' . basename($file));header('Content-Transfer-Encoding: binary');header('Expires: 0');header('Cache-Control: must-revalidate, post-check = 0, pre-check = 0');header('Pragma: public');header('Content-Length: ' . filesize($file));ob_clean();flush();readfile($file);if ($delaftersend) {unlink($file);}if ($exitaftersend) {exit;}}}}