【发布时间】:2019-10-19 13:15:05
【问题描述】:
我正在开发一个与 GitHub 集成的 Delphi 10.1 Berlin 项目。该项目打算通过 ZIP 文件下载存储库。但是,我遇到了一些问题。
最初,我选择(一如既往)使用 Indy 与 GitHub API 集成。我一直将 Indy 用于所有 Web API 消费。但是,我在 GitHub 上使用它没有任何成功。
API 需要 HTTPS。我已经获得了用于 Indy 的最新 OpenSSL DLL,并且正在使用带有 Delphi 10.1 Berlin 的 Indy 库。
我设置了一个 TIdHTTP 组件,并附加了一个 TIdSSLIOHandlerSocketOpenSSL。我已将该 IO 处理程序设置为所有可用的Method 选项,但没有一个给我有效的响应。我得到了两种不同的回应之一...
- 当使用
sslvSSLv3时,我得到:error:14094410:SSL routines: SSL3_READ_BYTES:sslv3 alert handshake failure. - 当使用
sslvTLSv1_2,我得到:error:1409442E:SSL routines:SSL_READ_BYTES:tlsv1 alert protocol version
我现在不得不求助于TRESTClient 才能使用 API。但它不能正确处理二进制。
测试就像https://api.github.com 一样简单。我可以在 Chrome 和 Postman 中调用它,然后得到响应。只是不是通过 Indy。
如何通过 Delphi 的 Indy 库与 GitHub 的 API 建立连接?
【问题讨论】:
-
您应该使用 IOHandler 的
SSLVersions属性而不是其Method属性。尝试将SSLVersions设置为[sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]
标签: rest delphi ssl github indy