Повышение Асио Синхронный вызов HTTPS - PullRequest
1 голос
/ 07 апреля 2020

Я использую приведенный ниже код для выполнения синхронного вызова https с проверкой сертификата ssl. В рамках проверки работоспособности я пытаюсь выполнить проверку https url без ssl-проверок и использовать приведенный ниже код, но я вижу, что метод POST не записывается в сокет. Я что-то здесь упускаю и как нам нужно, чтобы клиентские сертификаты попадали по URL-адресу https, чтобы включить это здесь?

 try{
       boost::asio::streambuf request_;       
        boost::asio::streambuf response_;

        boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
        //ctx.set_verify_mode(boost::asio::ssl::verify_peer);
        //ctx.load_verify_file("ca.pem");
        ctx.set_options(boost::asio::ssl::context::default_workarounds |
                boost::asio::ssl::context::no_sslv2 |
                boost::asio::ssl::context::no_sslv3);

        boost::asio::ssl::stream<boost::asio::ip::tcp::socket> socket(io_service,ctx);

        std::ostream request_stream(&request_);
        //request_stream << "POST /v4/decisionset/entitlements" << " HTTP/1.1\n";
        request_stream << "POST " << server_endpoint << " HTTP/1.1\n";
        request_stream << "Host: " << hostname << "\n";
        request_stream << "Accept: */*\n";
        request_stream << authorization_token << "\n";
        request_stream << client_name << "\n";
        request_stream << "Content-Length: " << req_str.length() << "\n";
        request_stream << "Content-Type: application/x-www-form-urlencoded \n";
        request_stream << "Connection: close\r\n\r\n";
        request_stream << req_str << "\n";
        tcp::resolver resolver(io_service);
        tcp::resolver::query query(hostname, port_no);

        tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
        tcp::resolver::iterator end;


        boost::asio::connect(socket.lowest_layer(), endpoint_iterator);
        boost::asio::write(socket, request_);


        // Read the response status line.
        boost::asio::read_until(socket, response_, "\r\n");
        string res=make_string(response_);
}
...