Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно сформировать POST запрос? [D7, WinXP]


DVM ©   (2006-11-08 18:23:00) 

Отсылаю данные посредством Winsock, не используя никаких компонентов, запрос такой:


     FRequest := 'POST ' + FPath + ' HTTP/' + FHTTPVersion + #13#10 +
                 'Connection: keep-alive' + #13#10 +
                 'Content-Type: application/x-www-form-urlencoded' + #13#10 +
                 'Content-Length: ' + inttostr(Length(FParams)) + #13#10 +
                 'Host: ' + FHost + #13#10 +
                 'Accept: text/html, */*' + #13#10 +
                 'User-Agent: user' + #13#10 +
                 'Authorization: Basic ' + EncodeBase64(FUserName + ':' + FPassword) + #13#10#13#10;
     FRequest := FRequest + FParams;


В результате на сервер (по данным снифера отправляется)

POST /IOCONTROL.CGI HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Host: 192.168.0.20
Accept: text/html, */*
User-Agent: user
Authorization: Basic Og==

Trigger1=1&Trigger2=1&ImageUpload=0&ImageEmail=0&


Но такой запрос не срабатывает (не делает того что надо)

То же самое проделанное через Indy срабатывает (отправляется следующее):


POST /IOCONTROL.CGI HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Host: 192.168.0.20
Accept: text/html, */*
User-Agent: user
Authorization: Basic Og==

Trigger1=1&Trigger2=1&ImageUpload=0&ImageEmail=0&


Почему так?

Get запрос у меня отправляется нормально.


Dmitrij_K   (2006-12-25 14:01:00) [1]


> o_serg   (25.12.06 13:03) [6]
>
> думаю новую тему создавать не зачем, спрошу здесь:
> Мне нужно загрузить из инета одну страничку, как и чем это
> сделать, чтобы  программа как можно меньше прибавила в весе?
>
> З.Ы. с сетевыми компонентами никогда не работал, можно подробнее
> плиз и лучше с примерами.


UrlDownloadToFile()


o_serg   (2006-12-25 13:03:00) [2]

думаю новую тему создавать не зачем, спрошу здесь:
Мне нужно загрузить из инета одну страничку, как и чем это сделать, чтобы  программа как можно меньше прибавила в весе?
З.Ы. с сетевыми компонентами никогда не работал, можно подробнее плиз и лучше с примерами.


Ketmar   (2006-11-09 01:25:00) [3]

>[4] Орион(c) 8-Nov-2006, 23:30
>худшем - 304 Bad request.
вот-вот.


Орион   (2006-11-08 23:30:00) [4]

> [2] Ketmar ©   (08.11.06 19:07)
> а) хм. keep-alive и http/1.0? нафига вообще тут keep-alive?

Сервер просто проигнорирует это поле в лучшем случае, в худшем - 304 Bad request.


DVM   (2006-11-08 22:51:00) [5]


> а) хм. keep-alive и http/1.0? нафига вообще тут keep-alive?

Я просто стал точно копировать запрос Инди, как рабочий. А у них так.


> б) попробуй заменить #13#10 на #10. иногда помогает.

Не мне не помогло.

Разобрался я в чем дело. Надо как я и думал все таки вычитывать ответ сервера на запрос. Каким то серверам по барабану это, другим нет.


Ketmar   (2006-11-08 19:07:00) [6]

а) хм. keep-alive и http/1.0? нафига вообще тут keep-alive?
б) попробуй заменить #13#10 на #10. иногда помогает.


DVM   (2006-11-08 18:25:00) [7]

Может дело в том, что я не читаю ответ сервера после выполнения запроса?
Но почему тогда GET в этом случае работает нормально?


Наверх

Титульная страница Поиск, карта сайта Написать письмо