Poco HTTPClientSession.recieveResponse пропускает следующие строки в программе C ++ - PullRequest
0 голосов
/ 18 октября 2019

Я использую Poco для отправки HTTP-запросов, как следует из названия. Прямо сейчас я просто пытаюсь отправить запрос GET на google.com и сохранить полученный HTML-код в строке, чтобы проверить Poco и посмотреть, подходит ли он мне. Однако у меня возникли небольшие проблемы с этим. Вот мой код:

try 
{
    Poco::URI uri("https://www.google.com");
    std::string path(uri.getPathAndQuery());
    if (path.empty()) path = "/";

    Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort());
    Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, path, Poco::Net::HTTPMessage::HTTP_1_1);
    request.add("Content-Length", "0");
    Poco::Net::HTTPResponse response;
    doRequest(session, request, response);
}
catch (Poco::Exception& exc)
{
    OutputDebugStringA(exc.displayText().c_str());
}
void doRequest(Poco::Net::HTTPSClientSession& session, Poco::Net::HTTPRequest& request, Poco::Net::HTTPResponse& response)
{
    session.sendRequest(request);
    std::istream& is = session.receiveResponse(response);
    std::string body(std::istreambuf_iterator<char>(is), { });
    message = (LPCWSTR)response.getStatus();
}

Я поставил точки останова на каждой строке doRequest, но срабатывают только первые две. После нажатия кнопки «Продолжить» на втором, программа просто продолжает работать как обычно. Я не получаю никаких исключений или ничего. Я добавляю Content-Length: 0, чтобы избежать исключения NoMessageExco от Poco.

...