123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- /**
- * 基于GuzzleHttp的简单版Http客户端。 Simple Http client base on GuzzleHttp
- *
- * @Author: Jaeger <JaegerCode@gmail.com>
- *
- * @Version V1.0
- */
- namespace Jaeger;
- use GuzzleHttp\Client;
- /**
- * Class GHttp
- * @package Jaeger
- *
- * @method static string get($url,$args = null,$otherArgs = [])
- * @method static mixed getJson($url, $args = null, $otherArgs = [])
- * @method static string post($url,$args = null,$otherArgs = [])
- * @method static string postRaw($url, $raw = null, $otherArgs = [])
- * @method static string postJson($url, $args = null, $otherArgs = [])
- */
- class GHttp
- {
- private static $client = null;
- public static function __callStatic($name, $arguments)
- {
- $protectedName = '_'.$name;
- if(method_exists(self::class,$protectedName)){
- return Cache::remember($protectedName, $arguments);
- }
- throw new MethodNotFoundException('Call undefined method '.self::class.':'.$name.'()');
- }
- public static function getClient(array $config = [])
- {
- if(self::$client == null){
- self::$client = new Client($config);
- }
- return self::$client;
- }
- /**
- * @param $url
- * @param array $args
- * @param array $otherArgs
- * @return string
- */
- protected static function _get($url,$args = null,$otherArgs = [])
- {
- is_string($args) && parse_str($args,$args);
- $args = array_merge([
- 'verify' => false,
- 'query' => $args,
- 'headers' => [
- 'referer' => $url,
- 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- ]
- ],$otherArgs);
- $client = self::getClient();
- $response = $client->request('GET', $url,$args);
- return (string)$response->getBody();
- }
- protected static function _getJson($url, $args = null, $otherArgs = [])
- {
- $data = self::get($url, $args , $otherArgs);
- return json_decode($data,JSON_UNESCAPED_UNICODE);
- }
- /**
- * @param $url
- * @param array $args
- * @param array $otherArgs
- * @return string
- */
- protected static function _post($url,$args = null,$otherArgs = [])
- {
- is_string($args) && parse_str($args,$args);
- $args = array_merge([
- 'verify' => false,
- 'form_params' => $args,
- 'headers' => [
- 'referer' => $url,
- 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- ]
- ],$otherArgs);
- $client = self::getClient();
- $response = $client->request('Post', $url,$args);
- return (string)$response->getBody();
- }
- /**
- * @param $url
- * @param null $raw
- * @param array $otherArgs
- * @return string
- */
- protected static function _postRaw($url, $raw = null, $otherArgs = [])
- {
- is_array($raw) && $raw = json_encode($raw);
- $args = array_merge([
- 'verify' => false,
- 'body' => $raw,
- 'headers' => [
- 'referer' => $url,
- 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- ]
- ],$otherArgs);
- $client = self::getClient();
- $response = $client->request('Post', $url,$args);
- return (string)$response->getBody();
- }
- /**
- * @param $url
- * @param null $args
- * @param array $otherArgs
- * @return string
- */
- protected static function _postJson($url, $args = null, $otherArgs = [])
- {
- is_string($args) && parse_str($args,$args);
- $args = array_merge([
- 'verify' => false,
- 'json' => $args,
- 'headers' => [
- 'referer' => $url,
- 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- ]
- ],$otherArgs);
- $client = self::getClient();
- $response = $client->request('Post', $url,$args);
- return (string)$response->getBody();
- }
- /**
- * @param $url
- * @param $filePath
- * @param null $args
- * @param array $otherArgs
- * @return string
- */
- public static function download($url,$filePath,$args = null,$otherArgs = [])
- {
- $otherArgs = array_merge($otherArgs,[
- 'sink' => $filePath,
- ]);
- return self::get($url,$args,$otherArgs);
- }
- /**
- * @param $urls
- * @return MultiRequest
- */
- public static function multiRequest($urls)
- {
- $client = self::getClient();
- return MultiRequest::newRequest($client)->urls($urls);
- }
- }
|