我想使用http/2为binance.com的api编写一个客户机。为此,我正在尝试库nghttp2,我在他们的示例代码中添加了对api的测试调用。
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::io_service io_service;
boost::asio::ssl::context tls(boost::asio::ssl::context::sslv23);
tls.set_default_verify_paths();
// disabled to make development easier...
// tls.set_verify_mode(boost::asio::ssl::verify_peer);
configure_tls_context(ec, tls);
session sess(io_service, tls, "api.binance.com", "443");..。
auto req = sess.submit(ec, "GET", "https://api.binance.com/api/v1/ping");..。
然而,它总是在错误处理程序中结束,告诉我
sslv3警报握手失败
我不知道如何调试这个。我能做些什么来理解为什么这不起作用呢?我尝试过将tls上下文创建的open更改为其他东西,比如tlsv12,但是都没有工作。如果它真的试图使用sslv3,那么它不起作用也就不足为奇了,因为api.binance.com的ssl测试报告没有对sslv3的支持。在nghttp2.org上进行测试,我没有得到这个错误。SSL谈判的某些地方出了问题。但我怎么看得到呢?
发布于 2018-05-03 12:16:07
这个问题被解决了:https://github.com/nghttp2/nghttp2/pull/1173。
因此,如果您很匆忙,并且不想等待nghttp2 1.32发布,您可以查看主分支。我确实从源头构建了nghttp,所以我可以说这需要时间,但是构建是直接的。
https://stackoverflow.com/questions/50081399
复制相似问题