###Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。 - 接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。 - 发送同步或异步的请求均使用相同的接口。 - 使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。 - 抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。 - 中间件系统允许你创建构成客户端行为。 #### 初始化设置 $client = new \GuzzleHttp\Client(['verify'=>false]); #### get方式 $res = $client->request('GET', 'https://yuhelove.com'); 或 $query = [ 'query'=>[ 'access_token'=>'aa', 'next_openid'=>'bb', ] ]; $res = $client->get('https://demo.yuhelove.com/a.php',$query); #### post方式 $dataa['name']='aaa'; $data = [ 'body'=>json_encode($dataa,JSON_UNESCAPED_UNICODE), 'headers' => [ 'Content-Type' => 'application/json', ] ]; 或者 $path='b.png'; $data = [ 'multipart' => [ [ 'filename'=>basename($path), 'contents'=>fopen($path, "r"), 'name'=>'media',//<input type="file" name="media"> ] ], ]; 或者 $path='b.png'; $dataa['name']='aaa'; $data = [ 'multipart' => [ [ 'filename'=>basename($path), 'contents'=>fopen($path, "r"), 'name'=>'media', ], [ 'contents'=>json_encode($dataa,JSON_UNESCAPED_UNICODE), 'name'=>'description',//<input type="text" name="description"> ] ], ]; 或者 $data=[ 'form_params' => [ //参数组 'a' => 'aaa', 'b' => 'bbb', 'nested_field' => [ //参数允许嵌套多层 'A' => 'AAA', 'B' => 'BBB', ] ], ]; $res = $client->post('https://demo.yuhelove.com/a.php',$data); 1. 第一种:通过body发送json数据,可用到的地方时公众号. 2. 第二种:传图片 3. 第三种:出图片和form表单方式 4. 第四种:单纯的form表单方式 #### 返回信息获取 $res->getHeaderLine('server'), //获取指定响应头 $res->getHeaders(),//所有响应头 $res->hasHeader('name'),//是否存在响应头 $res->getProtocolVersion(),//协议版本 $res->getStatusCode(),//状态码 $res->getBody(),//获取body体 $res->getHeader('server'),//获取响应头 $res->getBody()->getContents(),//内容 $res->getBody()->getSize()//大小 #### 下载 $url='http://blog.yuhelove.com/upload/6f46afd00b0154cbf5c8762d.png'; $saveFilePath = './xxxaddds.jpg'; $client = new \GuzzleHttp\Client(['verify'=>false]); $response = $client->get($url,['save_to'=>$saveFilePath]); 或者 $url='http://blog.yuhelove.com/system/captchas?t=111'; $saveFilePath = './xxxaddds.jpg'; $client = new \GuzzleHttp\Client(['verify'=>false]); $response = $client->get($url,['stream' => true]); file_put_contents('zhouliu.jpg',$response->getBody()->getContents()); 1. 第一种:图片文件下载 2. 第二种:流下载