使用Poco异步/等待HttpsClient中的Response

时间:2018-06-08 06:24:17

标签: websocket async-await poco

我对Poco知之甚少,最近在Poco开始了一个项目。

在我的项目中,我正在使用Poco WebSocket编写HTTPSClient。

到目前为止,我可以使用代码:

1)与HTTPS服务器通信(证书交换,上下文和会话创建)。

2)将数据传递给服务器并获得回复。

一切都很顺利,但现在我陷入了棘手的实施。

问题是: 我是HTTPSServer的订阅者。 我使用以下API连接到服务器:

ptrContext = new Context(Context::CLIENT_USE, ....<other params>)
SSLManager::instance().initializeClient(ptrPKey, ptrCert, ptrContext);
session = new Poco::Net::HTTPSClientSession(sessionUriObj->getHost(), sessionUriObj->getPort());
// Request -----
request = new Poco::Net::HTTPRequest(Poco::Net::HTTPRequest::HTTP_POST, serverUriObj.getPath(), Poco::Net::HTTPMessage::HTTP_1_1);
//Set parameter for Request
std::ostream &myOStream = session->SendRequest(request);
//Write body/data to myOStream.

在Body中,我将Stomp数据发送到服务器。

现在我的要求是 ==&gt;我的程序应该保留,直到我收到服务器的响应。

==&gt;再次消耗服务器响应后,开始等待另一个响应。

通常我正在处理这样的回复:

Poco::Net::HTTPResponse *response = new Poco::Net::HTTPResponse();
std::istream &rs = session->receiveResponse(*response);
std::string retStr =  std::string(std::istreambuf_iterator<char>(rs), {});

但这不符合我目前的要求。

在循环中检查3次后(查找响应),我的程序抛出异常“NoMessageException”。

我没有收到有关我的要求的任何信息/帮助。

请给我一些指针和帮助。这样我就可以解决这个问题了。

基本信息:

Poco版:( poco-1.9.0)

系统:(freeBSD)。

Poco-github上的链接:https://github.com/pocoproject/poco/issues/2362

提前多多感谢。

0 个答案:

没有答案