2017-10-09 10 views
1

사이트에 요청을 보내고 응답을받는 작은 코드가 있습니다. 나는 그 언어를 이해하고 그것을하는 방법을 이해하지 못합니다. 다음은 http get 메소드를 사용하여 요청을 보내는 코드 부분입니다. TCL에서 http get 쿼리로 응답을받는 방법

#!/usr/bin/expect 

set id [open file.txt w] 
set tok [::http::geturl "https://example.com/reques.php?=somedate -timeout 2000 -channel $id] 
::http::cleanup $tok 
close $id 
set id [open file.txt] 
set phone [read $id] 
close $id 
puts $phone 

그러나 코드를 실행할 때, I는 HTTP 패키지 당신은 Tcl 인터프리터에로드 될 필요가

invalid command name "http::geturl" 
    while executing 

답변

1

오류를 얻을; 그것은 기본적으로 거기 있지 않습니다. 따라서, (바로 #! 라인 아래) 스크립트의 상단에 넣어 :

package require http 

사실, 그것은 쉽게 모든 것을 볼 수 있습니다, 당신은 그 방법에 따라 모든 패키지를 명시하는 것이 좋습니다 보통이다 (원하는 버전을 선택적으로 지정할 수 있습니다).

#!/usr/bin/expect 

# At least Tcl 8.5; 8.6 will be fine too 
package require Tcl 8.5 

# Any version of Expect 
package require Expect 

# Any version of the http package that supports the v2 API 
package require http 2 

패키지 이름은 대소 문자를 구분합니다. 그리고 너는 할 수있다

+0

많은 감사, Donal! 이제 TCL 언어에 대해 더 많이 알게 될 것입니다. 당신이 쓴 것처럼 노력하고, html 형식의 페이지 텍스트를 얻습니다. get 형식으로 요청을 보내고 특정 데이터가 포함 된 사이트의 응답을 기다립니다. 새기다. 저에게 curl bash 스크립트를 통해 요청을 보내면 데이터가 사이트에서 가져옵니다. 어떻게 Tcl에서 동일한 작업을 수행 할 수 있습니까? 이제 페이지의 본문에 301 오류가 발생합니다. https에있는 사이트 일 수 있습니까? – Lefeofan

+0

https에 대한 다른 사용자의 예제를 사용하려고했는데 "tls 패키지를 찾을 수 없습니다"라는 오류 메시지가 나타납니다. – Lefeofan

+0

'tls' 패키지 (통신 암호화에 필요한 SSL 지원)는 다른 곳에서도 사용할 수 있습니다. 여기서 별도의 질문의 영역. 또한, 나는 전에 대답 했음에 틀림 없다고 생각합니다. –