您好我在POCO中使用分段上传来上传文件(通过正常的POST请求发送附加边界的文件内容)。但是,当我尝试将响应读作:
std::ostream& myOStream = session.sendRequest(req);
// sends the body
myOStream << reqBody;
Poco::Net::HTTPResponse res;
// get the response body from server
std::istream& inStream = session.receiveResponse(res);
std::ostringstream outStringStream;
outStringStream << inStream.rdbuf();
std::cout<< outStringStream.str();
我收到此异常&#34; SSL连接意外关闭&#34;在这一行:
outStringStream << inStream.rdbuf();
此外,如果我尝试将响应读作:
Poco::StreamCopier::copyStream( inStream, outStringStream );
std::cout<< outStringStream.str();
我得到空响应(在这种情况下没有例外)。 服务器返回纯文本作为响应。如果使用qt,我会将其作为响应,但不是通过POCO。请帮我看一下回复正文。可能是这个例外的原因??
另外,如果我将响应状态读为res.getStatus()和res.getReason(),则返回200Ok。我不明白回应机构的问题是什么。
答案 0 :(得分:0)
此代码对我有用,你可以试试。
std::istream& rs = _httpClientSession.receiveResponse(response);
memset(_response, 0, RESPONSE_BUFF_SIZE);
rs.read(_response, RESPONSE_BUFF_SIZE-1);
//below code is just to clear the istream
std::streamsize nRead = rs.gcount();
while( !rs.eof() || nRead != 0)
{
rs.read(_response, RESPONSE_BUFF_SIZE);
nRead = rs.gcount();
}
还有一件事,如果有任何异常,你必须通过调用_httpClientSession.reset()重置http会话;