您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman的Http服务-请求-获得原始请求post包体
发布时间:2021-12-04 23:58:15编辑:雪饮阅读()
获得原始请求post包体
$post = $request->rawBody();
这个功能类似与 php-fpm里的 file_get_contents("php://input");操作。用于获得http原始请求包体。这在获取非application/x-www-form-urlencoded格式的post请求数据时很有用。
实例:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8484');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
// $request为请求对象,这里没有对请求对象执行任何操作直接返回hello给浏览器
$post = $request->rawBody();
var_dump("原始请求包体:");
echo "\r\n";
var_dump($post);
echo "\r\n";
$connection->send("hello\r\n");
};
// 运行worker
Worker::runAll();
?>
实例运行并有客户端post请求带参以form-data时:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none http://0.0.0.0:8484 1 [OK]
---------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
string(19) "原始请求包体:"
string(150) "------------------------------d4fafb408bf2
Content-Disposition: form-data; name="name"
"snowDrink"
------------------------------d4fafb408bf2--
"
客户端post请求带参以form-data:
[root@izj6c2jeancylo0ppo4vz5z ~]# curl --location --request POST 'http://127.0.0.1:8484' --form 'name="snowDrink"'
hello
data-raw:
客户端也可以发送data-raw数据:
[root@izj6c2jeancylo0ppo4vz5z ~]# curl --location --request POST 'http://127.0.0.1:8484' --data '{user:"xy"}'
hello
在postman中可以看到请求应该是:
[root@izj6c2jeancylo0ppo4vz5z ~]# curl --location --request POST 'http://127.0.0.1:8484' --data-raw '{user:"xy"}'
hello
但是data-raw在linux上未必能行:
[root@izj6c2jeancylo0ppo4vz5z ~]# curl --location --request POST 'http://127.0.0.1' --data-raw '{user:"xy"}'
curl: option --data-raw: is unknown
据说是与curl版本有关。
服务端接收为:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none http://0.0.0.0:8484 1 [OK]
---------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
string(19) "原始请求包体:"
string(11) "{user:"xy"}"
关键字词:workerman,Http,原始请求,post
相关文章
- workerman的Http服务-请求-获得请求对象
- workerman的Http服务-请求-获得请求参数post
- workerman的Http服务-请求-获得请求参数get
- workerman的AsyncUdpConnection类的send方法
- workerman的AsyncUdpConnection类的__construct构造方
- workerman的AsyncTcpConnection类的transport属性都利
- workerman的AsyncTcpConnection类的reConnect 方法实
- workerman的AsyncTcpConnection类的connect 方法实现
- workerman类TcpConnection的接口send
- workerman类TcpConnection的接口pipe通道实现流量控制