我正在使用Poco :: Net :: HTTPClientSession获取一个服务器页面,并使用适当的Poco :: Net :: HTTPRequest,它可以正常工作。现在我收到回复,有时返回的页面会被gzip压缩。
我需要找出什么情况,以便我可以在必要时放气。应该指明这一点的HTTP标头是Content-Encoding:gzip;但是Poco :: Net :: HTTPResponse中没有getContentEncoding()方法。
这是一个不起作用的片段(因为没有resp.getContentEncoding()):
// resp is the Poco::Net::HTTPResponse object,
// sess is the Poco::Net::HTTPClientSession
std::istream &in = sess.receiveResponse(resp);
// Get the server-returned body as a string (potentially deflate)
std::ostringstream serveroutput;
if (resp.getContentEncoding() == "gzip") {
Poco::InflatingInputStream
inflater(in, Poco::InflatingStreamBuf::STREAM_GZIP);
Poco::StreamCopier::copyStream(inflater, serveroutput);
} else
Poco::StreamCopier::copyStream(in, serveroutput);
// Now we can get at the body as a string
std::string txt = serveroutput.str();
有没有人知道如何获取原始标题,以便我可以自己检查标题Content-Encoding,或者另一个有用的方法来确定服务器响应是否被gzip压缩?
答案 0 :(得分:1)
如果服务器设置Content-Encoding标头 您可以获得如下的编码值。
resp.get( “内容编码”)