У меня есть 2 версии кода:
// HTTP.h
class HTTP
{
private:
//unique_ptr<HTTPClientSession> session;
HTTPClientSession session;
bool doRequest(Poco::Net::HTTPRequest& request, const string& path, const string& content, string& responseBody);
public:
HTTP(const string& adress);
}
// HTTP.cpp
HTTP::HTTP(const string& adress)
{
Poco::URI uri(
adress.substr(0, 4) == "http" ? adress : "http://" + adress
);
//session = make_unique<HTTPClientSession>(uri.getHost(), uri.getPort());
HTTPClientSession session{ uri.getHost(), uri.getPort() };
}
bool HTTP::doRequest(HTTPRequest& request, const string& path, const string& content, string& responseBody) {
...
session.setTimeout(Timespan(5, 0));
//std::ostream& requestStream = session->sendRequest(request);
std::ostream& requestStream = session.sendRequest(request);
...
}
Если я использую unique_ptr для создания объекта сеанса, как в закомментированном коде, все будет хорошо.
Но если я использую только простые переменные, как в текущей версии.Тогда строка
session.sendRequest (запрос)
исключение выброса Соединение отклонено
Я не понимаю, почему?Не могли бы вы объяснить, пожалуйста.
PS запрос это простой HTTP GET запрос к статическому ресурсу.