在QT中对字符串进行压缩,然后POST到服务器,后台用.net解压缩。

QT端对数据压缩,使用的是zlib开源库。

实现代码:

QByteArray Compress(QByteArray data)
{
    QByteArray arTest;
    uLong tlen = data.size();
    unsigned char* buf = NULL;
    uLong blen = compressBound(tlen);

    if((buf = (unsigned char*)malloc(sizeof(char) * blen)) == NULL)
    {
        return arTest;
    }
    if(compress(buf, &blen, (unsigned char*)data.data(), tlen) != Z_OK)
    {
        return arTest;
    }


    arTest = QByteArray::fromRawData((char*)buf, blen);


    return arTest;
}

后台接收数据的web api:

public string test([FromBody]JObject data)
        {
            string param = data["data"].ToString();

            Byte[] bytes = Convert.FromBase64String(param);
            string obj = Encoding.UTF8.GetString(bytes);


            bytes = UnCompress.UnZip(bytes);
            string str = System.Text.Encoding.Default.GetString(bytes);

            return data.ToString().Length.ToString();
        }


解压缩的类:

public class UnCompress
    {

        public static byte[] UnZip(byte[] value)
        {
            try
            {
                byte[] tmpArray = ZLibCompressor.DeCompress(value);
                return tmpArray;
            }
            catch (Exception ex)
            {
                return null;
            }

        }
    }

.net中需要引用zlibnet这个库,可以自行到http://www.zlib.net/下载。

阅读更多
版权声明: https://blog.csdn.net/qq_17331291/article/details/79977092
个人分类: C#/.NET QT
上一篇抄来的一个Python爬虫demo,备忘
下一篇用.net写web api的时候,返回json
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭