5

我正在尝试通过 HTTPS 以Io 语言获取文件:

url := URL with("https://api.example.com")
url fetch println

我明白了:

 Error_0x7f97e1509a80:
  location         = "/opt/local/lib/io/addons/Socket/io/URL.io:232"
  message          = "Protocol 'https' unsupported"

我试图在网上找到一些东西,但是众所周知,这并不容易,因为它的名字。我只找到了这个线程http://tech.groups.yahoo.com/group/iolanguage/message/10898但这已经很老了。

如何在 Io 中获得 HTTPS 支持?

编辑

我发现在 Io 的源代码中有一个 SecureSocket 插件,它是 OpenSSL 的包装器。不过,当我sudo port io install在装有 Mountain Lion 的 MacBook 上安装它时,它并没有安装。我尝试从源代码构建它,但没有运气。它也不是在 Linux 机器上为我构建的。

编辑2

我刚刚尝试git clone https://github.com/stevedekorte/io.git再次从源代码 () 构建 Io(使用包含的脚本build.sh),结果发现 cmake 确实检测到了 OpenSSL:

 -- Found OpenSSL: /usr/lib/libssl.dylib;/usr/lib/libcrypto.dylib  

但是没有构建 SecureSocket 插件。它的自述文件:https ://github.com/stevedekorte/io/tree/master/addons/SecureSocket说:

除非将此文件中的补丁应用于 OpenSSL 0.9.8e,否则 DTLS1 绑定不可用。但是,此补丁包括停用 d1_both.c 中的握手重传代码,使其不适合生产环境。我不承担任何责任,等等。如果你想使用它,请应用补丁(从各种新闻组和我自己的实验中收集)并取消注释 build.io 的注释掉的块。值得一提的是,OpenSSL 中的 DTLS 支持从 0.9.8 开始是新的,并且从一开始就非常错误。这是一个好主意,但它似乎还没有准备好生产。这些绑定也不例外。

4

2 回答 2

2

如果你不能让 io 去做,你最好的选择是调用一个外部工具,比如wgetor curlwhich can 然后在本地加载文件/结果或通过管道返回它。

于 2013-04-26T01:04:35.087 回答
0

对于其他对另一种解决方法感兴趣的人,应该可以将stud放在将执行 SSL 工作的 Io 程序前面。我自己还没有测试过。

stud - Scalable TLS Unwrapping Daemon stud 是一个网络代理,它终止 TLS/SSL 连接并将未加密的流量转发到某个后端。它的设计目的是在多核机器上有效地处理成千上万的连接。

于 2013-04-30T12:37:44.940 回答