Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost Asio同步https呼叫_C++_Ssl_Https_Boost Asio_Pyopenssl - Fatal编程技术网

C++ Boost Asio同步https呼叫

C++ Boost Asio同步https呼叫,c++,ssl,https,boost-asio,pyopenssl,C++,Ssl,Https,Boost Asio,Pyopenssl,我使用下面的代码通过ssl证书验证进行https同步调用。作为健全性测试的一部分,我尝试在没有ssl验证的情况下点击https url,并使用了下面的代码,但我可以看到它没有将POST方法写入套接字。我在这里遗漏了什么吗?我们需要如何获得客户端证书才能点击https url将其包含在这里 try{ boost::asio::streambuf request_; boost::asio::streambuf response_; b

我使用下面的代码通过ssl证书验证进行https同步调用。作为健全性测试的一部分,我尝试在没有ssl验证的情况下点击https url,并使用了下面的代码,但我可以看到它没有将POST方法写入套接字。我在这里遗漏了什么吗?我们需要如何获得客户端证书才能点击https url将其包含在这里

 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_);
}
试试看{
boost::asio::streambuf请求;
boost::asio::streambuf响应;
boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
//设置验证模式(boost::asio::ssl::验证对等);
//加载验证文件(“ca.pem”);
ctx.set_选项(boost::asio::ssl::context::default_解决方案|
boost::asio::ssl::context::no\u sslv2|
boost::asio::ssl::context::no\u sslv3);
boost::asio::ssl::流套接字(io_服务,ctx);
std::ostream请求流(&request);

//请求\u流头应该以
\r\n
而不是
\n
结尾。禁用ssl验证部分后,我可以点击https url,这里没有握手。请告诉我我们需要如何获取客户端证书以及如何在此处包含它。头应该以
\r\n
而不是
\n
结尾。我可以点击https urler在此处禁用ssl验证部分和am错过握手..请让我知道我们需要如何获取客户端证书以及如何在此处包含它。