2011-01-05 15 views
1

でHTTPSを要求問題私はTCLを使用して、次の要求(OpenACS)をやろうとしているTCL

http::register https 443 tls::socket 

set url "https://encrypted.google.com" 

set token [http::geturl $url -timeout 30000] 

set status [http::status $token] 
set answer [http::data $token] 

http::cleanup $token 
http::unregister https 

問題は、私は$の状態変数を読んだとき、私は「EOF」と$の答えを得ることです変数は空になります。私は

http::register https 443 [list tls::socket -tls1 1] 

TLSのV.1を有効にしようと、それが唯一のサイトhttps://www.galileo.eduのためではなくhttps://encrypted.google.comのために動作します。

私が接続しようとしているサイトはhttps://graph.facebook.com/me/feed?access_token= ... ですが動作しません。

私はHTTPSでページの内容を取得するためにカールを使用していましたが、私はOpenSSLをインストールしていますので、問題は見えません。また、TCLとHTTPS接続を行う別の方法がありますか?

これがコーディングの問題であるかどうかはわかりません(多分私はhttpsプロトコルに間違って登録されています)か、それとも私のサーバーの構成が悪いですか。誰かが助けてくれることを願う!ありがとう!

+0

他のサーバーでコードをテストしたところ、うまくいきました。そのため、サーバーの構成が悪いと思います。 – javiertoledos

答えて

2

ええと、私はそれを再現できません。あなたが使っているTclのパッチレベルと、tlsパッケージのどのバージョン?

package require http 
package require tls 

# This is your code, cut-n-pasted with blank lines removed 
http::register https 443 tls::socket 
set url "https://encrypted.google.com" 
set token [http::geturl $url -timeout 30000] 
set status [http::status $token] 
set answer [http::data $token] 
http::cleanup $token 
http::unregister https 

puts $status 

そしてそれは、$statusの内容があまりにも(しかし、ここで貼り付けるには長すぎる)可能性が探していると、出力として「ok」を生成します。

私はこれをしませんでした。これはTcl 8.5.2(アップグレードが必要なのは分かっています)、http 2.7とtls 1.6です。

+0

私のTCLバージョンは8.5.6、http 2.7ですが、tlsは1.5です。私はtlsパッケージをアップグレードする必要があると思います。 – javiertoledos

関連する問題