无法读取gzdecompress二进制数据从python到php



我正在使用邮差从Python发送数据到PHP服务器(用于测试目的)。以下是python的示例代码:

import json
import zlib
data = {"owner": "test"}
compressed = zlib.compress(json.dumps(data).encode("utf-8"))
print(compressed)
以上python代码的输出是:
b'xx9cxabV*(xcfK-Rxb2RP*I-.Qxaax05x004x8cx05xc7'
下面是读取这些数据的PHP代码:
echo json_decode(zlib_decode($pythonCompressedBinary), TRUE);

这是邮差

中的请求示例当我尝试在php中解码python二进制文件时,它失败并给出错误,它被视为错误。我手动把二进制字符串在我的PHP代码,它失败了。当我试图将单引号手动替换为双代码并将其保存在php中的变量中时,它会成功解码。但是当我试图用str_replace()在php中使用双引号替换单引号时,仍然解码失败。

我尝试在python中hexlify()数据,然后在php中hex2bin(),然后我能够读取二进制数据并成功解码。但我不想做十六进制过程。我想直接读取二进制并在php中解码。

请帮助我如何在php端解码这个python二进制压缩数据。

您正在发送compressed的Python表示,而不是compressed本身。compressed是PHP端zlib_decode()期望的字节序列。

不要在Python中使用print将二进制字节转换为字符串。直接发送字节

最新更新