如何在POCO :: Net :: HTTPResponse对象中获取Content-Encoding?

时间:2014-07-08 15:35:46

标签: c++ httpresponse poco

我正在使用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压缩?

1 个答案:

答案 0 :(得分:1)

如果服务器设置Content-Encoding标头 您可以获得如下的编码值。

  

resp.get( “内容编码”)