欢迎光临
我们一直在努力

使用Guzzle执行HTTP请求

安装

使用Composer安装:

composer require guzzlehttp/guzzle 

或者编辑项目的composer.json文件,添加Guzzle作为依赖:

{ "require": { "guzzlehttp/guzzle": "~6.0" } } 

然后执行composer update

Guzzle基本使用

发送请求

use GuzzleHttp\client; $client = new Client([ 

设置查询字符串

$response = $client->request('GET', 'http://httpbin.org?foo=bar'); 

或使用query请求参数来声明查询字符串参数:

$client->request('GET', 'http://httpbin.org', [ 'query' => ['foo' => 'bar'] ]); 

使用响应

获取状态码:

$code = $response->getStatusCode(); 

判断头部信息:

if ($response->hasHeader('Content-Length')) { echo "It exists"; } 

获取返回的头部信息:

echo $response->getHeader('Content-Length'); 

使用getBody方法可以获取响应的主体部分(body),主体可以当成一个字符串或流对象使用

$body = $response->getBody(); 

可以将返回体转换成字符串或者直接以字符串形式读取:

$stringBody = (string) $body; $content = $body->getContents(); 

上传文件

有时我们需要将文件传送到另一个web服务上去,可以使用post文件流形式将文件数据传送到指定web目录。

$filename = 'a.jpg'; $data = fopen($filename, 'r'); $res = $client->request('POST', 'http://localhost:9999/upload.php', ['body' => $data]); $body = $res->getBody(); print_r($body->getContents()); 

接收上传文件的upload.php可以这样写:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { $data = file_get_contents('php://input'); $file = file_put_contents('b.jpg', $data); if (FALSE === $file) { echo '上传成功'; } else { echo '上传失败'; } } 

提交表单

发送application/x-www-form-urlencoded POST请求需要你传入form_params 数组参数,数组内指定POST的字段。

$res = $client->request('POST', 'http://localhost:9999/form.php', [ 'form_params' => [ 'field_name' => 'abc', 'other_field' => '123', 'nested_field' => [ 'nested' => 'hello' ] ] ]); $body = $res->getBody(); print_r((string)$body); 

在接收端form.php使用$_POST即可获取上传的表单数据。

提交JSON数据

有时候我们在于API接口交互的时候需要将数据以特定的json格式传给api,可以这样写:

$res = $client->request('POST', 'http://localhost:9999/json.php', [ 'json' => ['foo' => 'bar'] ]); $body = $res->getBody(); print_r((string)$body); 

接收端json.php使用file_get_contents('php://input')可获得提交的json数据。

使用Guzzle还可以发送异步请求以及并发请求,具体使用方法可参照Guzzle官方文档

其实我们在一些特殊场景下可以使用Swoole的协程特性实现异步的http客户端,功能非常强大。

 

https://www.helloweba.net/php/596.html

 

-----------------------------------------------------------自己项目----------------------------------------------------

GuzzleHttp application/x-www-form-urlencoded 

headers 上加 Authorization

 $url = "http://xx.xx18.com/kxxord/bxxxupc"; $key = "4283A7F1244D4172Axxxxxx"; $headers = [ 'Content-Type' => 'application/x-www-form-urlencoded', 'Authorization' => $key, ]; $client = new \GuzzleHttp\Client(); $param = [ 'url'=>$domain_name, 'page_index'=>1, ]; $response = $client->request('POST', $url,['form_params'=>$param,'headers'=>$headers]); $response->getStatusCode(); // 200 $response->getHeaderLine('content-type'); // 'application/json; charset=utf8' // $body = $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}' $data = json_decode($response->getBody(), true);

 

 

 使用Guzzle执行HTTP请求

 

 

 $param_chinaz = [ 'key'=>$chinazApi_key, 'keyword'=>$user['word_by_domain'], 'domainName'=>$user['domain_name'], ]; $response_chinaz = $client->request('POST', $china_url,['form_params'=>$param_chinaz,'connect_timeout' => 120]);

 

-----------------------------------------------------封装的curl请求------------------------------------------------------------------

 public function index() { //dump('ddd hello world');die; $time = time(); $arr = [ "高防vps","移动高防", "游戏高防服务器", "直播高防cdn", "高防主机", "cdn高防ddos", "高防独立服务器租用", "武汉安全公司", "高防", "杭州高防服务器", "浙江高防", "高防ip", "域名高防", "山东高防服务器", "传奇高防服务器", "武汉网络安全公司", "游戏盾", "青岛高防服务器", "武汉网络安全", "高防cdn购买", "硬防服务器", "高防护服务器", "网游高防服务器", "青岛bgp高防", "waf高级版", "青岛bgp", "高防IP", "主机waf", "免费高防ip", "waf 高防", "魔域高防服务器", "武汉高防服务器", "动态高防", "湖北高防服务器", "waf服务器", "武汉机房", "高防idc", "ip高防", "高防游戏盾", "扬州双线", "waf", "网络攻击", "防", "独立服务器", ]; foreach ($arr as $k => $v){ $chinazApi_key = "09f74f9089f6428c9fdfc65744572"; //chinazApi_key $china_url = "http://www.chinaz523.com/CallAPI/BaiduIndex"; $param_chinaz = [ 'key' => $chinazApi_key, 'keyword' =>$v, ]; // $response_chinaz = $client_chinaz->request('POST', $china_url, ['form_params' => $param_chinaz, 'connect_timeout' => 180,]); try { $res = $this->curl($china_url,"post",'',$param_chinaz); } catch (\Exception $e) { dump($e->getMessage());die; } $res1 = [ 'keyword'=>$v, 'res'=>$res, ]; // sleep(3); dump($res1); } dump(time()-$time." s"); } // $url 是请求的链接 // $postdata 是传输的数据,数组格式 private function curl($url = '', $method = 'get',$header = [],$param = []) { $val = strtolower($method) == 'get' ? 0 : 1; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, $val); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置为不是https也可以访问 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //设置header头 if ( !empty($header) ) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } //设置post的数据包,即传参 if(!empty($param) && $val == 1){ curl_setopt($ch, CURLOPT_POSTFIELDS, $param); } if (isset($header['header'])){ $header_info = curl_getinfo($ch); var_dump($header_info); } $result = curl_exec($ch); curl_close($ch); return $result; }

 

 

 -------------------------------------------能成---------------------------------------------------------------------------------------

$url = "http://xxxx.com/keyword/xxupc"; $key = "5B4FE278B5EF43xx78csdsD"; $headers = [ 'Content-Type' => 'application/x-www-form-urlencoded', 'Authorization' => $key, ]; $client = new \GuzzleHttp\Client(['connect_timeout' =>10,'timeout' => 10]); //设置超时时间 $param = [ 'url'=>$domain_name, ]; $response = $client->request('POST', $url,['form_params'=>$param,'headers'=>$headers]); $response->getStatusCode(); // 200 $response->getHeaderLine('content-type'); // 'application/json; charset=utf8' // $body = $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}' $data = json_decode($response->getBody(), true);

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《使用Guzzle执行HTTP请求》
文章链接:https://www.456zj.com/21659.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址