Скрипт входа в Betfair Tcl - PullRequest
2 голосов
/ 27 мая 2020

Я пытаюсь использовать следующий сценарий tcl для входа в betfair в неинтерактивном режиме: -

#!/usr/bin/env tclsh
package require TclCurl

set postData "username=xxxxxxxxx&password=yyyyyyyyy"
set postHeader [list "X-Application: curlCommandLineTest"]
set BFLogin [::curl::transfer -url https://identitysso-cert.betfair.com/api/certlogin \
-headervar loginHeader \
-sslverifypeer 0 \
-sslcert "client-2048.crt" \
-sslkey "client-2048.key" \
-post 1 \
-postfields $postData \
-httpheader $postHeader ]

Однако он не сохраняет вывод в BFLogin. Вместо этого, когда сценарий завершается, он просто выводит что-то вроде: -

{"sessionToken":"92YN1v2Oz0lVv59nHwCryrfCnzNbInTCsssssssssssssssssss","loginStatus":"SUCCESS"}

Что нормально, но не сохраняет его в переменной BFLogin выше. Что я делаю не так, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Из того, что я собрал из этого руководства и wiki , похоже, что вы можете использовать параметр -bodyvar, чтобы указать curl, где хранить ответ тела (ответ на вызов и ответ тела отдельный). Я не могу протестировать код, но он, вероятно, должен работать вот так:

#!/usr/bin/env tclsh
package require TclCurl

set postData "username=xxxxxxxxx&password=yyyyyyyyy"
set postHeader [list "X-Application: curlCommandLineTest"]
set responseBody ""
set BFLogin [::curl::transfer -url https://identitysso-cert.betfair.com/api/certlogin \
    -bodyvar responseBody \
    -sslverifypeer 0 \
    -sslcert "client-2048.crt" \
    -sslkey "client-2048.key" \
    -post 1 \
    -postfields $postData \
    -httpheader $postHeader ]

Я также удалил параметр headervar, который у вас был, так как не похоже, что вы его использовали

1 голос
/ 27 мая 2020

Возможно более читабельное?

#!/usr/bin/env tclsh
package require TclCurl

dict set curlOpts -url https://identitysso-cert.betfair.com/api/certlogin
dict set curlOpts -bodyvar responseBody
dict set curlOpts -sslverifypeer 0
dict set curlOpts -sslcert "client-2048.crt"
dict set curlOpts -sslkey "client-2048.key"
dict set curlOpts -post 1
dict set curlOpts -postfields "username=xxxxxxxxx&password=yyyyyyyyy"
dict set curlOpts -httpheader [list "X-Application: curlCommandLineTest"]

curl::transfer {*}$curlOpts
...