LINUX.ORG.RU

послать http запрос из приложения серверу


0

0

Для одной embedded разработки, необходимо сделать обновление прошивки из стороннего приложения. Сейчас это сделано через веб посредством встроенного httpd сервера с модификациями от производителя чипа. Вот такая шапка посылается на сервер:

POST /upgrade.cgi HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Referer: http://192.168.2.1/firmware.asp
Accept-Language: en
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: 192.168.2.1
Content-Length: 341
Connection: Keep-Alive
Cache-Control: no-cache
Authorization: Basic OmFkbWlu

-----------------------------7da271f502f4
Content-Disposition: form-data; name="page"

firmware.asp
-----------------------------7da271f502f4
Content-Disposition: form-data; name="file"; filename="C:\test.txt"
Content-Type: text/plain

test file

-----------------------------7da271f502f4--

(На имя и содержимое файла не обращайте внимания, это просто для проверки). В httpd зарегистрирован обработчик upgrade.cgi, где во входном потоке ищется строка «Content-Disposition» и потом извлекается «name=file»

Как я понимаю, все строки вплоть до "-----------------------------7da271f502f4" всегда неизменны, а что такое "-----------------------------7da271f502f4" и как это генерировать?


это описано в RFC по MIME-типам.
в сущности, это просто набор символов, которым разделяются поля, демаркационный маркер. посмотри, он идет первый раз сразу наверху, после заголовка. потом уже в теле он встречается только чтобы отделить одну часть от другой. требование к нему одно - набор символов должен не встречаться нигде в теле запроса.

val-amart ★★★★★ ()

вообще, тебе наверное нужен curl

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

спасибо. А серверу может понадобится генерировать такой маркер? Я это к тому спрашиваю, что тогда стоит поискать в сырцах httpd и взять его код.

cruz7 ()
Ответ на: комментарий от val-amart

Разбираюсь с курлом, могу делать запрос на сервер. Вот только не могу понять, как делать авторизацию - т.е. в броузере ввожу адрес, далее выскакивает окошко, где вводится логин и пароль - вот это хотелось бы сэумулирирвать средствами API курла. Не подскажете, в какую сторону смотреть ?

cruz7 ()
Ответ на: комментарий от cruz7

Разбираюсь с курлом, могу делать запрос на сервер. Вот только не могу понять, как делать авторизацию - т.е. в броузере ввожу адрес, далее выскакивает окошко, где вводится логин и пароль - вот это хотелось бы сэумулирирвать средствами API курла. Не подскажете, в какую сторону смотреть ?

Это смотря что за окошко. Если это HTTP Auth, то val-amart выше написал. Если же какая-то самописная форма, то в мане смотреть в области -d и --cookiejar.

undertaker ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.