使用Racket连接到HTTPS服务器

时间:2015-07-26 20:51:29

标签: https racket

当我尝试使用Racket的missingLabelNode.zPosition = 10.0f;包通过HTTPS连接到网络服务器时,会发生以下情况:

使用net/http-client

#t

使用➜ code racket Welcome to Racket v6.2. > (require net/http-client) > (http-sendrecv "google.com" "/" #:ssl? #t) ssl-connect: requested protocol not supported requested: 'auto context...: /usr/local/share/racket/collects/openssl/mzssl.rkt:608:0: make-raw-context /usr/local/share/racket/collects/openssl/mzssl.rkt:482:18 /usr/local/share/racket/collects/racket/private/more-scheme.rkt:264:2: call-with-exception-handler /usr/local/share/racket/collects/net/http-client.rkt:294:0: http-sendrecv92 /usr/local/share/racket/collects/racket/private/misc.rkt:87:7

'tls

> (require net/http-client) > (http-sendrecv "google.com" "/" #:ssl? 'tls) ssl-connect: requested protocol not supported requested: 'tls context...: /usr/local/share/racket/collects/openssl/mzssl.rkt:608:0: make-raw-context /usr/local/share/racket/collects/openssl/mzssl.rkt:482:18 /usr/local/share/racket/collects/racket/private/more-scheme.rkt:264:2: call-with-exception-handler /usr/local/share/racket/collects/net/http-client.rkt:294:0: http-sendrecv92 /usr/local/share/racket/collects/racket/private/misc.rkt:87:7

的输出
(supported-client-protocols)

如何使用> (require openssl) > (supported-client-protocols) '() 连接到HTTPS服务器?

2 个答案:

答案 0 :(得分:3)

使用'tls代替#t

> (require net/http-client)
> (http-sendrecv "google.com" "/" #:ssl? 'tls)
#"HTTP/1.1 302 Found"
'(#"Location: https://www.google.dk/?gws_rd=cr&ei=10q1Ve3dMsm4sQGd_KioAQ"
  #"Cache-Control: private"
  #"Content-Type: text/html; charset=UTF-8"
  #"P3P: CP=\"This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.\""
  #"Date: Sun, 26 Jul 2015 21:02:15 GMT"
  #"Server: gws"
  #"Content-Length: 259"
  #"X-XSS-Protection: 1; mode=block"
  #"X-Frame-Options: SAMEORIGIN"
  #"Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1437944535:LM=1437944535:V=1:S=_FmpeZRsEpdAXW_-; expires=Tue, 25-Jul-2017 21:02:15 GMT; path=/; domain=.google.com"
  #"Set-Cookie: NID=69=GDETUcLzNFvaXS9uD9fxW_rA-k3ywu9vsb8VVCBUUOrbL-BmWjxpj0duYXoNZyH0EHMt54dmVnn3xPJvESfM4tLy_T8DYCsas_9dloNB9s6NfcxmbeD4DQzAAou0ly_l; expires=Mon, 25-Jan-2016 21:02:15 GMT; path=/; domain=.google.com; HttpOnly"
  #"Connection: close")
#<input-port:pipe>

答案 1 :(得分:3)

如果您正在使用Linux,可能会发生这种情况,因为Racket不了解您已安装的OpenSSL库的版本。通过检查ssl-load-fail-reason确认,如@soegaard建议的那样。

解决方法是安装OpenSSL开发包(libssl-devopenssl-devel或类似的东西),其中包括无版本的共享库符号链接。