即使设置了keepAlive,POCO请求超时

 jixiaojia 发布于 2022-12-31 10:55

我正在使用一个简单的Get请求来从服务器获取通知.我希望请求持续到服务器收到响应(可能是1到9个小时).但我面临2分钟内请求超时的问题.我将会话和请求都设置为"keepalive".但它没有帮助.我也尝试过使用setKeepAliveTimeout并给它一个很大的值.但这也没有改变任何东西.以下是我使用的代码:

try{
        //Prepare request
        Poco::URI uri(url);
        const Poco::Net::Context::Ptr context = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "", Poco::Net::Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
        Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context);
        session.setKeepAlive(true);

        // prepare path
        std::string path(uri.getPathAndQuery());
        if (path.empty())
        {
            path = "/";
        }

        // send request
        Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, path, Poco::Net::HTTPMessage::HTTP_1_1);
      req.setKeepAlive(true);
        session.sendRequest(req);

        // Get response
        Poco::Net::HTTPResponse res;

        //Get status code
     statusCode = res.getStatus());
        //Get status
        status = res.getReason();

        //Get body
        std::istream &inStream = session.receiveResponse(res);
        std::ostringstream outStringStream;
        outStringStream << inStream.rdbuf();
        response = outStringStream.str();
    }
    catch(Poco::Exception& exception)
    {
       cout<

请让我知道我错在哪里.谢谢.

我在大约2分钟内获得状态-1超时.

1 个回答
  • 这个问题现在有些陈旧,但我有答案,花了一些时间才找到它.

    这不是您想要更改的keepAlive设置,因为这只会保持请求之间的连接打开.

    一旦你提出了请求

    session.sendRequest(req);

    (即,一旦建立了会话的底层套接字),获取会话的套接字引用并更改接收超时,即:

    StreamSocket &str = session.socket();
    // Create a timespan of (e.g.) 600 secs (10 mins)
    Timespan ts(600L, 0L);
    str.setReceiveTimeout(ts);
    

    这对我有用!

    2022-12-31 10:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有