Есть задача - сформировать через TCL http HTML заголовок для посылки команды на модем через WEB.
Вот часть кода :proc geturl_auth {url username password} {
set auth "Basic [base64::encode $username:$password]"
set ref "http://192.168.1.1/reset/\n"
set zapros "reset/index.html"
set headerl [list Authorization $auth Referer $ref]
set tok [http::geturl $url -headers $headerl ?? -query ???]
set res [http::data $tok]
http::cleanup $tok
return $res
}
geturl_auth "http://192.168.1.1/reset/index.html" "admin" "admin"
Если делать без опции -query $variable то отсылается запрос GET. Для запроса POST нужно применять опцию -query , но она вставляет ненужное поле - и команда не проходит.
Вот такой пакет нужно сформировать :
POST /reset/index.html /HTTP/1.1\r\n
Request method: POST
Request URI: /reset/index.html
Request Version: HTTP/1.1
Host: 192.168.1.1\r\n
User-agent: Mozilla....
Referer: http://192.168.1.1/reset/\r\n
Authorization: Basic xxxxx
Credentials: admin:admin
Если применять -query " " то вставляется еще :
Line-based text data: application/x-www-form-url-encoded
Модем отвечает на него Bad request.