php guzzlehttp,PHP 使用 Guzzle 发送 HTTP 请求
需求:发布消息时,要做一次HTTP请求,使用POST方式且URI带QUERY_STRING,BODY为JSON的格式传输数据。
通信方式:HTTP
HTTP Method:POST
Content-Type:无论实际的内容是纯文本字符串、JSON数据还是 x-www-form-urlencoded 编码的键值对,内容类型(Content-Type)必须设置为 text/plain。
本来选用的Laravel7新增的HTTP工具类,但是奈何现在版本不支持,这里又不想自己造轮子,所以使用了Guzzle的Client类来发送请求。
发送请求
先上代码:
use GuzzleHttp\Client;
public static function sendNotice($b,$c,$params)
{
$url = a.com?b=$b&c=$c";
$headers = ["Content-Type"=>"text/plain"];
$client = new Client();
$client->request('POST',$url,['json' => $params,'headers'=>$headers]);
}
可以看到,在request方法里,第一个参数可以选择请求方式,POST或者GET。第二个参数设置请求地址,可以带上query_string,也就是GET参数。第三个参数是设置数据传输的东西,比如我这里设置了header头,和body里的$params数据。
当使用json做键时,Guzzle会自动把
params转化为http_build_query的字符参数。这里还是建议用Json,因为http_build_query会丢掉空值,而且连key一起丢掉。
第二个header一定要是headers做key,注意。其他的key是不生效的,这个s很重要。
接收请求
我在本地另起了一个test项目。改host为a.com,然后在项目根目录增加index.php。
代码如下:
//获取请求头及一些请求信息
//file_put_contents('1.txt', json_encode($_SERVER));
//获取body里的流信息
file_put_contents('1.txt', file_get_contents('php://input'));
//file_put_contents('1.txt', json_encode($_GET));//这里也能用$_REQUEST
PHP发送请求和接收打印请求就完成了。
扩展
Guzzle是有异步并发请求能力的,当我们有多个请求时,可以合并请求,在then()回调函数里处理。请求时间为最长的那个请求耗费的时间。
php guzzlehttp,PHP 使用 Guzzle 发送 HTTP 请求相关推荐
- Laravel 使用Guzzle执行HTTP请求
手册地址:http://docs.guzzlephp.org/en/stable/request-options.html#headers Guzzle是一个 PHP 的HTTP客户端,用来轻而易举地 ...
- PHP 使用 Guzzle 执行 HTTP 请求
阅读目录 阐述 安装 Guzzle 基本使用 get 请求 使用响应 获取返回的头部信息 使用 getBody 上传文件 PSOT 表单提交 提交 JSON 数据 使用 guzzle 发送异步的 HT ...
- ajax发送动态字符传,如何发送ajax请求文件与其他字符串的变量?
我想创建ajax调用并发送数据与文件和其他变量,我也使用django,如果它的帮助.如何发送ajax请求文件与其他字符串的变量? 我尝试: js文件: $("#save-new-reques ...
- jquery发送put请求_浅谈GET,POST,PUT发送请求
一般我们在浏览器的地址栏输入网址回车后,发送的是GET请求 当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restfu ...
- 使用rest_framework写api接口的一些注意事项(axios发送ajax请求)
1. 类继承GenericAPIView,定义queryset 印象深刻的事: 由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset 没有设置 ...
- Vue之axios发送Ajax请求
2.10 axios发送ajax请求 axios github 2.10.1 准备工程 创建一个django工程,例如 login.创建完成之后,再创建一个子应用,例如users.最后再设置一下模板文 ...
- 爬虫之requests模块发送post请求
爬虫之requests模块发送post请求 思考:哪些地方我们会用到POST请求? 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息) 需要传输大文 ...
- java post xmll_HttpClient发送Post请求,内容格式为xml,并获取响应内容
ChannelDistributor.xml 内容如下: yisou abcd1234 10010000 00 1).HttpClient发送Post请求,内容格式为xml,并获取响应内容 impor ...
- PHP爬取post网页数据,php curl发送post请求爬取webService接口数据简单实例
header('Content-Type: text/html;charset=utf-8'); /** * 使用curl发送post请求 * @param $url * @param string ...
- python写页面发送post请求_Python模拟浏览器向CSDN发送post请求的方法,POST
目录 1.发送get请求的方法 import requests import json def GET(url): #get请求 req = requests.get(url) #输出状态码 prin ...
最新文章
- 百度发的208亿春晚红包,靠这样的技术送到了你手上 | 解读
- 在《我的世界》里搭建神经网络,运行过程清晰可见,不仅好玩,而且代码全部开源!...
- SpringBoot中通过自定义缓存注解(AOP切面拦截)实现数据库数据缓存到Redis
- 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits中的“logits”到底是个什么意思?
- zookeeper的设计猜想-数据同步
- Java获取泛型T的类型 T.class
- Java中锁的使用和实现
- 神了,一次解决Java所有痛难点!
- trunk vlan 加路由
- python拆分字符串函数_Python字符串操作-拆分,切片,从HEX转换为DEC
- python物理模拟.pdf_用Python物理建模的第一本书终于来啦
- linux锐捷代码_锐捷 for linux - 沈阳建筑大学
- php 查看linux硬盘序列号,LINUX获取硬盘序列号
- 运用C语言指针知识实现对一个二维数组转置
- 显卡组超级计算机,NVIDIA发布全新显卡 在家就能拥有超级计算机
- 4只鸭子在同一个圆圈内游泳,问:4只鸭子出现在同一个半圆内的概率是多少?Python解答
- ios IDP/IEP证书申请测试用
- 除了迅雷,这几款下载神器也超级好用!
- 2020年中国对外直接投资行业发展综述及发展趋势分析[图]
- PHP常见面试题和答案
热门文章
- linux sfc模拟器,PSP适用SFC模拟器Snes9x完全使用教程
- 新职业教育的三节课,凭什么做到今天这样
- dat image 微信_电脑微信image文件夹下的dat文件怎么打开?
- capturing self strongly in this block is likely to lead to a retain cycle 警告解决
- matlab randn state 2,matlab中randn(‘state’)
- ES异常 : Validation Failed: 1: no requests added
- 腾讯短网址怎么在线生成
- 纯前端实现验证码功能
- STM32:Modbus-RTU通讯协议——CRC校验
- Java 13 明天发布,最新最全新特性解读