博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#与PHP通信压缩
阅读量:6506 次
发布时间:2019-06-24

本文共 1414 字,大约阅读时间需要 4 分钟。

hot3.png

        试了很久,没有成功,终于找到了这个解决方案。谢天谢地

        C#客户端访问PHP SOAP WebService,当传输大量文本数据时,可以通过压缩减少网络传输。C#在命名空间下提供了两个类GZipStream 类和DeflateStream类来进行数据的压缩和解压缩。经本人实验,在C#下使用GZipStream压缩的字符串在PHP下使用gzuncompress函数无法解压缩,有人说可以使用gzdecode解开,但本人的PHP不支持gzdecode函数,但有gzencode函数(why?原因未明,据说是PHP的BUG,可能到PHP6才提供此函数)。

C#下使用DeflateStream类压缩文本后,可以在PHP下用gzinflate解压缩。示例代码如下:

客户端C#(在头4个字节增加了原文本的长度,方便在C#中解压缩,对于在PHP端解压缩这个没有用处):

[c-sharp]  
public static string Compress(string text)        {            byte[] buffer = Encoding.UTF8.GetBytes(text);            MemoryStream ms = new MemoryStream();            using (DeflateStream zip = new DeflateStream(ms, CompressionMode.Compress, true))            {                zip.Write(buffer, 0, buffer.Length);            }            ms.Position = 0;            MemoryStream outStream = new MemoryStream();            byte[] compressed = new byte[ms.Length];            ms.Read(compressed, 0, compressed.Length);            byte[] gzBuffer = new byte[compressed.Length + 4];            System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);            System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);            return Convert.ToBase64String(gzBuffer);        }

 

PHP端

function Decompress($strSource){    $strTemp = base64_decode($strSource);    $strTemp = substr($strTemp, 4);    return gzinflate($strTemp);}

支持中文,编码为UTF8.

转载于:https://my.oschina.net/linland/blog/170244

你可能感兴趣的文章
smarty使用php代码,笑谈配置,使用Smarty技术_php
查看>>
oracle数据实际值限制,c# – Oracle数据库TNS密钥“数据源”的值长度超过了’128’的限制...
查看>>
silk v3 decoder php,解码转换QQ微信的SILK v3编码音频为MP3或其他格式
查看>>
linux不能访问80端口,lunux开放80端口(本地访问不了linux文件可能是这个原因)...
查看>>
android单位转换小程序,微信小程序中rpx与rem单位转换
查看>>
ps切图教程 android,PS前端切图完整教程
查看>>
HTML如何把输入框变成必填值,required输入框为必填项
查看>>
背锅侠逆袭之路
查看>>
演示:使用协议分析器取证IPv6的报文结构
查看>>
oracle 11gr2 rac中的4种IP解说
查看>>
为什么你找不到工作?
查看>>
汇编语言的应用
查看>>
device platform 相应的表
查看>>
php des 加密解密实例
查看>>
【Mac】Mac键盘实现Home, End, Page UP, Page DOWN
查看>>
实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求
查看>>
安德鲁斯----多媒体编程
查看>>
[zz]在linux中出现there are stopped jobs 的解决方法
查看>>
Delphi下实现全屏快速找图找色 一、数据提取
查看>>
查询表字段信息
查看>>