读取POST请求体

希望直接访问一个请求的体,而不是访问PHP放在$POST中的解析后的数据。例如,希望处理一个XML文档,这个文档作为Web服务请求的一部分提交。
解决方案解决方案
读取php://input流:
$body = file_get_contents('php://input');
file_get_contents('php://input') 是一个常用的方法,用于读取原始的 POST 数据。当你处理 HTTP 请求时,特别是当请求的内容类型(Content-Type)是 application/json、application/x-www-form-urlencoded 或 multipart/form-data(但通常不用于文件上传,因为会有更复杂的处理方式)时,这个方法特别有用。
工作原理
php://input 是一个只读的流,允许你读取原始的 POST 数据。
file_get_contents() 函数用于读取文件或流的内容,并将其作为字符串返回。
当你使用 file_get_contents('php://input') 时,PHP 会从请求体中读取数据,直到遇到 EOF(文件结束符)。这对于处理非表单数据(如 JSON 请求体)特别有用,因为 $_POST 超全局变量通常只用于处理 application/x-www-form-urlencoded 或 multipart/form-data 编码的表单数据。

使用场景
JSON 数据:当客户端发送 JSON 格式的数据时,你可以使用 file_get_contents('php://input') 来获取这些数据,并使用 json_decode() 函数将其解析为 PHP 数组或对象。
原始数据:如果你需要处理不以标准表单格式发送的数据(例如,自定义格式或二进制数据),php://input 也很有用。
示例
假设客户端发送了一个 JSON 请求体:
{
"name": "John Doe",
"email": "john.doe@example.com"
}

在 PHP 中,你可以这样读取并解析这些数据:
$input = file_get_contents('php://input');
$data = json_decode($input, true); // 将 JSON 字符串解码为关联数组

if (json_last_error() === JSON_ERROR_NONE) {
// 成功解析 JSON
$name = $data['name'];
$email = $data['email'];
// ... 处理数据
} else {
// 处理 JSON 解析错误
}

posted @   kksllss  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示