从C#用PHP解码GZIP流

时间:2019-02-18 19:58:51

标签: c# php asp.net curl gzip

我在解码来自外部API的gzip响应时遇到了一些麻烦。该外部API返回的是base64 gziped字符串,我在使用PHP解码时遇到问题。

这是API的响应标头:

struct

现在这是我从API获得的正文:

< Content-Length: 148
< Content-Type: application/json
< Content-Encoding: gzip
< Expires: -1
< Server: Microsoft-IIS/7.5

我怀疑这是base64字符串,因此在解码时会得到:

gAAAAB+LCAAAAAAABAA9jM0KQEAURs+zzFrJz8p2rC0oWwlJMVOMlby7L8nu9J177oXB4hmZRAU5CSmRuKVn5fx2Qy2aWTgI7HJB7HE02oN89N54FeFvLJW+ZcSijlJ2kN/k3dvcPFC95lSAAAAAgAAAAB+LCAAAAAAABAA9jM0KQEAURs+zzFrJz8p2rC0oWwlJMVOMlby7L8nu9J177oXB4hmZRAU5CSmRuKVn5fx2Qy2aWTgI7HJB7HE02oN89N54FeFvLJW+ZcSijlJ2kN/k3dvcPFC95lSAAAAAgAAAAB+LCAAAAAAABAA9jM0KQEAURs+zzFrJz8p2rC0oWwlJMVOMlby7L8nu9J177oXB4hmZRAU5CSmRuKVn5fx2Qy2aWTgI7HJB7HE02oN89N54FeFvLJW+ZcSijlJ2kN/k3dvcPFC95lSAAAAA

问题是,我不知道该如何进一步解码。我尝试了8000 0000 1f8b 0800 0000 0000 0400 3d8c cd0a 4040 1446 cfb3 cc5a c9cf ca76 ac2d 285b 0949 3153 8c95 bcbb 2fc9 eef4 9d7b ee85 c1e2 1999 4405 3909 2991 b8a5 67e5 fc76 432d 9a59 3808 ec72 41ec 7134 da83 7cf4 de78 15e1 6f2c 95be 65c4 a28e 5276 90df e4dd dbdc 3c50 bde6 5480 0000 00 gzdecode和许多其他函数进行解码,但均未成功。

我被困在这里,因为我不知道下一步是什么。

这是API开发人员提供的用C#编写的解压缩方法:

zlib_decode

对于解决此问题的任何指导或提示,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

好奇的是,我通常会查找WordPress核心来处理这些问题,因为它们多年来已捕获了大多数极端情况。不过不是这个。

我没有尝试重建该C#代码,而是通过相关功能和偏移量的多种组合来强制使用。

这完成了:

var_dump( gzdecode( substr( base64_decode( $data ), 4 ) ) );

// string(128) "{"Code":412,"Value":"RegistrationSet","Route":"CN23/C_Document"}"