| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Грамотно составить POST |
| Автор: Koyan 10.7.2008, 13:41 |
| Задача програмно пройти логин и пас(они известны) и войти на следующую страницу. Перечитал все темы, попробовал лес вариантов 0 эмоций, сервер не найден и тп HTML стартовой странички: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><title>BMR (Kieback&Peter)</title><meta http-equiv="content-type" content="text/html; charset=UTF-8"> ... ... </head><body class="std"><div class="hg"><div class="dg"><img class="logo" src="/l.gif"> <div class="nav"></div><div class="tln"></div> <div class="tlh">Веб-сервер BMR</div><div class="tlt"></div> <div class="tgl"><form action="/bmrlogin.html" method="post"> <table class="lg"><tr><td align="right" class="tabshort">Пользователь</td> <td align="left"><select size="1" name="usr" length="10"><option value="0">Пользователь 0</option><option value="1">Пользователь 1</option><option value="2">Пользователь 2</option><option value="3">Пользователь 3</option></select></td></tr> <tr><td align="right" class="tabshort">Код доступа</td><td align="left"> <input type="password" name="pwd" size="10" maxlength="20" value="" class="lg"/></td> </tr><tr><td> </td><td class="tablong" align="right"><input type="submit" value="Войти в систему"></td></tr></table></form><div class="lg">1 На логине стоит ниспадающий список, остальное стандартно.... |
| Автор: Koyan 10.7.2008, 15:35 |
| Отснифил POST POST /bmrlogin.html HTTP/1.1 User-Agent: Opera/9.21 (Windows NT 5.1; U; ru) Host: 192.168.00.97 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Referer: http://192.168.00.97/bmrlogin.html Connection: Keep-Alive, TE TE: deflate, gzip, chunked, identity, trailers Content-Length: 14 Content-Type: application/x-www-form-urlencoded usr=3&pwd=2460 Не понятно TE и HTTP/1.1 подставлять |
| Автор: Alkash 10.7.2008, 15:59 |
| А IdHTTP юзать - не? |
| Автор: SneG0K 10.7.2008, 17:19 |
| Та отправь ты уже как нибуть этот пост. Хоть через тот же IdTCP. |
| Автор: Koyan 11.7.2008, 09:23 |
| Да собственно через IdHTTP я и посылаю(D2007, XP) один из вариантов(дело происходит в локалке): procedure TForm1.Button1Click(Sender: TObject); var LoginInfo: TStrings; Response: TStringStream; begin LoginInfo := TStringList.Create; Response := TStringStream.Create(''); LoginInfo.Clear; LoginInfo.Add('usr=3'); LoginInfo.Add('pwd=2460'); IdHTTP1.Host:='192.168.0.99'; IdHTTP1.Post('/bmrlogin.http',LoginInfo,Response); Memo1.Clear; Memo1.Lines.Add(Response.DataString); Response.Free; LoginInfo.Free; end; в снифе 0 эмоций..... Добавлено через 14 минут и 11 секунд Пробовал через HTTPReqResp1 post летит куда надо и в ответ код страницы авторизации.... Но как туда пас лог и все остальное.... не понятно |
| Автор: aktuba 11.7.2008, 16:42 | ||
|
| Автор: Koyan 11.7.2008, 17:21 |
| Так я пост отправляю, похож 1 в 1 с оригинальным..... но сервер возвращает только стартовую страницу в чем трабола.......... procedure TForm1.Button1Click(Sender: TObject); var fm:TStringList; begin fm:=TStringList.Create; try fm.Values['usr']:=edit1.Text; fm.Values['pwd']:=edit2.Text; memo1.text:=idhttp1.Post('http://192.168.0.97/bmrlogin.html',fm); finally fm.Free; end; end; Подскажите пожалуйста : Перед пост запросом не должена ли моя прога отправить GET запрос или чтонибуть подобное; и как быть с архивированием gzip, deflate..... может в них засада??? |
| Автор: MetalFan 11.7.2008, 21:26 |
чудес не бывает, значит не 1 в 1. |
| Автор: sai_NT 14.7.2008, 15:25 |
| Не забывай о поле Referer HTTP запроса к серверу. Некоторые серваки не отдают "нормального" (нужного для тебя) ответа, если это поле пустое или левое. И еще. Проснифай теперь тот запрос, который прогой передаешь и обрати внимание на: Connection, Content-Type |