【问题标题】:PHP: http raw POST data contain BINARYPHP:http 原始 POST 数据包含 BINARY
【发布时间】:2019-02-20 21:12:44
【问题描述】:

我有一个将 POST 数据发送到我的服务器的设备。 所以 print_r($_POST) 是空的,我只有在运行时才能看到数据

$content = file_get_contents('php://input');
var_dump($content);   

//or i can use:  print_r($content);

我将它们保存到一个文件中,结果是一些 json 和 BINARY DATA (CHECK IMAGE)

如果我添加这样的代码 json_decode($content,true); 我什么都看不到

那么我该如何解码二进制文件,或者我可以做些什么来解码 json 并查看以二进制形式发送的数据?

【问题讨论】:

  • 可以添加附件吗?
  • 你现在可以查看
  • 您需要尝试搜索该输入以查找有效结构。然后解析那个。我可以推荐this吗?
  • 没有此设备的文档吗?它应该发送什么? HTTP 请求 Content-type 标头是什么?它应该在$_SERVER['HTTP_CONTENT_TYPE']中可用
  • [Content-Type] => application/octet-stream, application/octet-stream

标签: php


【解决方案1】:

如果您想解码PHP 中的二进制数据,请尝试以下操作:

<?php
$binarydata = "\x04\x00\xa0\x00";
$data = unpack('C*', $binarydata);
var_dump($data);

输出:

array (size=4)
  1 => int 4
  2 => int 0
  3 => int 160
  4 => int 0

将您的内容从 file_get_contents('php://input') 加载到 $binarydata,您将获得一个值数组。然后,您可以应用一些逻辑来提取 JSON 字符串并对其进行处理。

【讨论】:

  • array(125) { [1]=> int(121) [2]=> int(0) [3]=> int(0) [4]=> int(0) [ 5]=> int(123) [6]=> int(34) [7]=> int(102) ....int(125) [124]= > int(10) [125]=> int(0) } 那么如何处理这些
  • 这些是字节,由位构建(8 位 = 1 个字节)。例如字符串“enroll”,这就是您可能要查找的内容,由以下内容表示:char 101, 110, 114, 111, 108, 108 ascii e n r o l l
猜你喜欢
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
相关资源
最近更新 更多