Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis QNetworkManager是否默认接受压缩回复?_Iis_Qt_Qt4_Compression - Fatal编程技术网

Iis QNetworkManager是否默认接受压缩回复?

Iis QNetworkManager是否默认接受压缩回复?,iis,qt,qt4,compression,Iis,Qt,Qt4,Compression,我使用从服务器获取文件,但是我不知道在传输过程中是否使用标准gzip压缩来压缩文件,如果没有,如何让它们下载压缩文件 我该怎么检查呢?你应该使用数据包嗅探器/网络分析仪自己检查 QNetworkAccessManager确实支持接收压缩的HTTP回复,因此理论上,如果HTTP服务器设置正确,它应该可以工作。考虑到下面的句子,我会说不,但它们可以是: downloadProgress()信号也是 接收到数据时发出,但 它可能包含的字节数 不表示实际字节 已接收,如果需要任何转换 对内容(例如, 解

我使用从服务器获取文件,但是我不知道在传输过程中是否使用标准gzip压缩来压缩文件,如果没有,如何让它们下载压缩文件


我该怎么检查呢?

你应该使用数据包嗅探器/网络分析仪自己检查


QNetworkAccessManager确实支持接收压缩的HTTP回复,因此理论上,如果HTTP服务器设置正确,它应该可以工作。

考虑到下面的句子,我会说不,但它们可以是:

downloadProgress()信号也是 接收到数据时发出,但 它可能包含的字节数 不表示实际字节 已接收,如果需要任何转换 对内容(例如, 解压缩并移除 协议开销)

你可以在这里找到它:

我没试过

为了压缩,如果我记得很清楚,你可以发送QByteArray。。。在这类对象上,可以使用“压缩”

您还可以查看一些Qt示例,如:

我没有全部看,但也许你会发现一些有趣的东西


希望对你有所帮助

我刚刚通过添加以下内容进行了快速测试:

request.setRawHeader("Accept-Encoding", "gzip,deflate");
发送到QNetworkRequest,数据返回看起来压缩的内容(因为它小了约20%且不可用)


就解压而言,QNetworkManager和QNetworkReply似乎并不智能。看起来我必须在返回的QByteArray上实现gzip和/或deflate。

当您在
QNetworkRequest
对象上设置自定义
Accept Encoding
原始头时(例如通过覆盖的
QNetworkAccessManager::createRequest()
),
QtWebKit
将不再解压缩回复:qhttpnetworkconnection.cpp的源代码:======================

    // If the request had a accept-encoding set, we better not mess
    // with it. If it was not set, we announce that we understand gzip
    // and remember this fact in request.d->autoDecompress so that
    // we can later decompress the HTTP reply if it has such an
    // encoding.
    value = request.headerField("accept-encoding");
    if (value.isEmpty()) {
#ifndef QT_NO_COMPRESS
        request.setHeaderField("Accept-Encoding", "gzip, deflate");
        request.d->autoDecompress = true;
#else
        // if zlib is not available set this to false always
        request.d->autoDecompress = false;
#endif

请在其他地方阅读本文,以便在没有对其进行测试的情况下:不要自己设置接受编码的头,然后QNam应该透明地处理它(返回解压缩的负载)。

我终于找到了一个问题的解决方案,这个问题花了我一周的时间。我对request.setRawHeader行进行了注释(“接受编码”、“gzip、deflate”);最终能够接收到soap消息。非常感谢。