Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.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
C++ Poco c++;Net:Http从响应获取标头_C++_Http_Http Caching_Poco Libraries - Fatal编程技术网

C++ Poco c++;Net:Http从响应获取标头

C++ Poco c++;Net:Http从响应获取标头,c++,http,http-caching,poco-libraries,C++,Http,Http Caching,Poco Libraries,使用http:/p>的POCO C++网络库 我想尝试制定一个持久缓存策略 首先,我认为我需要从缓存头中获取expires,并用缓存值进行交叉检查(如果我错了,请告诉我) 那么如何从httpResponse中提取缓存头呢 我看到你可以用java做这个,但是,我怎么用POCO C++? 下面是一个使用POCO的普通http GET请求: try { // prepare session URI uri("http://www.google.se"); HTTPClientS

使用http:/p>的POCO C++网络库 我想尝试制定一个持久缓存策略

首先,我认为我需要从缓存头中获取expires,并用缓存值进行交叉检查(如果我错了,请告诉我)

那么如何从
httpResponse
中提取缓存头呢

<>我看到你可以用java做这个,但是,我怎么用POCO C++? 下面是一个使用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;
试试看
{
//准备会议
URI(“http://www.google.se");
HTTPClientSession会话(uri.getHost(),uri.getPort());
//准备路径
字符串路径(uri.getPathAndQuery());
if(path.empty())path=“/”;
//发送请求
printnet(path.c_str());
HTTPRequest-req(HTTPRequest::HTTP_-GET,path,HTTPMessage::HTTP_1_1);
发送请求(req);
//得到回应
printnet(“获取响应”);
HTTPResponse;

cout在最后一个
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;
}
cout优先;
值=i->秒;
库特
那么如何从httpResponse中提取缓存头呢

res.get("Cache-control");