需求:发布消息时,要做一次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 请求相关推荐

  1. Laravel 使用Guzzle执行HTTP请求

    手册地址:http://docs.guzzlephp.org/en/stable/request-options.html#headers Guzzle是一个 PHP 的HTTP客户端,用来轻而易举地 ...

  2. PHP 使用 Guzzle 执行 HTTP 请求

    阅读目录 阐述 安装 Guzzle 基本使用 get 请求 使用响应 获取返回的头部信息 使用 getBody 上传文件 PSOT 表单提交 提交 JSON 数据 使用 guzzle 发送异步的 HT ...

  3. ajax发送动态字符传,如何发送ajax请求文件与其他字符串的变量?

    我想创建ajax调用并发送数据与文件和其他变量,我也使用django,如果它的帮助.如何发送ajax请求文件与其他字符串的变量? 我尝试: js文件: $("#save-new-reques ...

  4. jquery发送put请求_浅谈GET,POST,PUT发送请求

    一般我们在浏览器的地址栏输入网址回车后,发送的是GET请求 当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restfu ...

  5. 使用rest_framework写api接口的一些注意事项(axios发送ajax请求)

    1. 类继承GenericAPIView,定义queryset 印象深刻的事: 由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset 没有设置 ...

  6. Vue之axios发送Ajax请求

    2.10 axios发送ajax请求 axios github 2.10.1 准备工程 创建一个django工程,例如 login.创建完成之后,再创建一个子应用,例如users.最后再设置一下模板文 ...

  7. 爬虫之requests模块发送post请求

    爬虫之requests模块发送post请求 思考:哪些地方我们会用到POST请求? 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息) 需要传输大文 ...

  8. java post xmll_HttpClient发送Post请求,内容格式为xml,并获取响应内容

    ChannelDistributor.xml 内容如下: yisou abcd1234 10010000 00 1).HttpClient发送Post请求,内容格式为xml,并获取响应内容 impor ...

  9. PHP爬取post网页数据,php curl发送post请求爬取webService接口数据简单实例

    header('Content-Type: text/html;charset=utf-8'); /** * 使用curl发送post请求 * @param $url * @param string ...

  10. python写页面发送post请求_Python模拟浏览器向CSDN发送post请求的方法,POST

    目录 1.发送get请求的方法 import requests import json def GET(url): #get请求 req = requests.get(url) #输出状态码 prin ...

最新文章

  1. 百度发的208亿春晚红包,靠这样的技术送到了你手上 | 解读
  2. 在《我的世界》里搭建神经网络,运行过程清晰可见,不仅好玩,而且代码全部开源!...
  3. SpringBoot中通过自定义缓存注解(AOP切面拦截)实现数据库数据缓存到Redis
  4. 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits中的“logits”到底是个什么意思?
  5. zookeeper的设计猜想-数据同步
  6. Java获取泛型T的类型 T.class
  7. Java中锁的使用和实现
  8. 神了,一次解决Java所有痛难点!
  9. trunk vlan 加路由
  10. python拆分字符串函数_Python字符串操作-拆分,切片,从HEX转换为DEC
  11. python物理模拟.pdf_用Python物理建模的第一本书终于来啦
  12. linux锐捷代码_锐捷 for linux - 沈阳建筑大学
  13. php 查看linux硬盘序列号,LINUX获取硬盘序列号
  14. 运用C语言指针知识实现对一个二维数组转置
  15. 显卡组超级计算机,NVIDIA发布全新显卡 在家就能拥有超级计算机
  16. 4只鸭子在同一个圆圈内游泳,问:4只鸭子出现在同一个半圆内的概率是多少?Python解答
  17. ios IDP/IEP证书申请测试用
  18. 除了迅雷,这几款下载神器也超级好用!
  19. 2020年中国对外直接投资行业发展综述及发展趋势分析[图]
  20. PHP常见面试题和答案

热门文章

  1. linux sfc模拟器,PSP适用SFC模拟器Snes9x完全使用教程
  2. 新职业教育的三节课,凭什么做到今天这样
  3. dat image 微信_电脑微信image文件夹下的dat文件怎么打开?
  4. capturing self strongly in this block is likely to lead to a retain cycle 警告解决
  5. matlab randn state 2,matlab中randn(‘state’)
  6. ES异常 : Validation Failed: 1: no requests added
  7. 腾讯短网址怎么在线生成
  8. 纯前端实现验证码功能
  9. STM32:Modbus-RTU通讯协议——CRC校验
  10. Java 13 明天发布,最新最全新特性解读