我对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
提前多多感谢。