pococ++: Http从响应中获取报头

Poco c++Net: Http get headers from response

本文关键字:获取 报头 响应 Http pococ++      更新时间:2023-10-16

我使用POCO c++ . Net库来处理http

我想尝试制定一个持久化缓存策略。

首先,我认为我需要从缓存头和缓存值交叉检查过期(请告诉我,如果我错了)。

那么我如何从httpResponse提取缓存头?

我已经看到你可以在Java (getFirstHeader())中做到这一点,但我如何在pococ++中做到这一点?

下面是使用POCO的普通http get请求:

try
{
    // prepare session
    URI uri("http://www.google.se");
    HTTPClientSession session(uri.getHost(), uri.getPort());
    // prepare path
    string path(uri.getPathAndQuery());
    if (path.empty()) path = "/";
    // send request
    printnet(path.c_str());
    HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
    session.sendRequest(req);
    // get response
    printnet("Get response");
    HTTPResponse res;
    cout << res.getStatus() << " " << res.getReason() << endl;
    // print response
    istream &is = session.receiveResponse(res);
    StreamCopier::copyStream(is, cout);
}
catch (Exception &ex)
{
    printnet(ex.displayText().c_str());
    return -1;
}
return 0;

那么我如何从httpResponse提取缓存头?

res.get("Cache-control");

在最后一个try块中可以添加以下内容以打印出标题到屏幕:

cout << "RESPONSE:";
string name;
string value;
NameValueCollection::ConstIterator i = res.begin();
while(i!=res.end()){
    name=i->first;
    value=i->second;
    cout << name << "=" << value << endl << flush;
    ++i;
}