Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Помогите отправить POST


Автор: SAVANE 10.2.2011, 16:39
Вот код формы куда шлю POST

Код

<form method="post" name="login" action="checklogin.aspx" id="Form1">

        <div id="mainFloatForm">
            <table id="floatForm" onkeyup="if (event.keyCode == 27) showFloatForm(1);" cellpadding="0"
                cellspacing="0">
                <tbody>
                    <tr>
                        <td colspan="2" class="floatFormHeader">
                            <span>Ваш логин/пароль</span><img src="img/close_.gif" onclick="showFloatForm(1);"
                                class="close" border="0" height="14" width="16"></td>
                    </tr>
                    <tr>

                        <td class="tdRight">
                            Логин</td>
                        <td>
                            <input name="login" size="13" class="width100pc" type="text" id="Text1"><input name="fi"
                                type="hidden"></td>
                    </tr>
                    <tr>
                        <td class="tdRight">
                            Пароль</td>

                        <td>
                            <input name="pass" size="13" class="width100pc" type="password" id="Password1"><hr
                                noshade size="1">
                            <br>
                            <input name="subm" value="Войти" type="submit" id="Submit1">&nbsp;<input value="Закрыть"
                                onclick="showFloatForm(1);" id="darkgrey" type="button" name="darkgrey"><br>
                            <div class="spacer" style="height: 0.5em">
                            </div>
                        </td>
                    </tr>
                </tbody>

            </table>
        </div>
    </form>




Вот код который нашел в DRKB и подправил под себя, но видно криво подправил

Код

S := Format('login=%s&pass=%s', ['LOGIN', 'PASSWORD']);
PostData := VarArrayCreate([1, Length(S) + 1], varByte);
System.Move(S[1], VarArrayLock(PostData)^, Length(S) + 1);
VarArrayUnlock(PostData);
if AutoModemConnect='1' then ModemConnect;
if AutoMonitConnect='1' then
        begin
        webbrowser1.Navigate('https://mypage.com/defaul.aspx', Flags, TargetFrameName, PostData, Headers);
        end;


Подскажите как сформировать переменные Flags, TargetFrameName, PostData, Headers

Автор: MetalFan 10.2.2011, 17:10
Цитата(SAVANE @  10.2.2011,  16:39 Найти цитируемый пост)
но видно криво подправил

в чем выражается "кривость"?
Есть реальная необходимость использовать WebBrowser? Может post запрос заслать теми же indy или synapse?

Автор: SAVANE 10.2.2011, 17:18
Сервер выкидывает на страницу ошибки 405.
Я так понимаю что  

Код

S := Format('login=%s&pass=%s', ['LOGIN', 'PASSWORD']);


не правильно указаны поля ввода (login и pass). И возможно нужно оставлять не пустыми TargetFrameName, Headers.

Еще не знаю нужно ли в POST передавать нажатие кнопки
Код

<input name="subm" value="Войти" type="submit" id="Submit1">&nbsp;<input value="Закрыть"            onclick="showFloatForm(1);" id="darkgrey" type="button" name="darkgrey">



Автор: MetalFan 10.2.2011, 17:35
SAVANE, посмотри любым http отладчиком (http://www.fiddler2.com/), что шлет браузер и шли то же самое. что гадать то?

Автор: SAVANE 10.2.2011, 18:21
Цитата(MetalFan @ 10.2.2011,  17:35)
SAVANE, посмотри любым http отладчиком (http://www.fiddler2.com/), что шлет браузер и шли то же самое. что гадать то?

Не хотит Fiddler смотреть.
ПРоблема может в том что протокол HTTPS и еще используется прокси

Автор: MetalFan 10.2.2011, 18:41
SAVANE, https fiddler смотреть умеет, надо только в настройках галки поставить.
А вот с прокси не знаю... он сам как прокси работает, возможно надо просто в настройках поковыряться.
Есть еще другие http отладчики, но мне ранееупомянутого хватает.

Автор: SAVANE 10.2.2011, 19:00
В соседней теме
http://forum.vingrad.ru/forum/topic-319790/kw-вконтакте-авторизаци-вход-спамер-чекер.html
Нашел снифер HTTP Analyzer V5.
Ним легко показало данные пост.
Код

login    LOGIN
fi    9999
pass    PASS
subm    Войти


Добавил в строку где формируется POST получилось

Код

S := Format('login=%s&fi=%s&pass=%s&subm=s%', ['watchdog', '9999', 'flm850', 'Войти']);
PostData := VarArrayCreate([1, Length(S) + 1], varByte);
System.Move(S[1], VarArrayLock(PostData)^, Length(S) + 1);
VarArrayUnlock(PostData);
ProxySetup(ProxyIP);
webbrowser1.Navigate(MonitStartIP, Flags, TargetFrameName, PostData, Headers);


Но ответ сервер все тоже.

Автор: SAVANE 11.2.2011, 10:05
Сравнил что шлет программа и браузер при авторизации.
Проблема в том что нужно отправить слово "Войти" на русском, а моя прога отправляет "s".
хотя строка S := Format('login=%s&fi=%s&pass=%s&subm=s%', ['watchdog', '9999', 'flm850', 'Войти']);
Я когда-то встречал тему про отправку кирилических символов в POST, а найти не могу.

Автор: MetalFan 11.2.2011, 12:00
Цитата(SAVANE @  11.2.2011,  10:05 Найти цитируемый пост)
Проблема в том что нужно отправить слово "Войти" на русском, а моя прога отправляет "s".

ничего удивительного, если так строка формата написана....

Автор: SAVANE 11.2.2011, 17:31
Если просто прописать

Код

S := 'login=LOGINs&fi=9999&pass=PASS&subm=ВОЙТИ';


Даные пост то что надо, но ответ неверный пароль или логин.

Цитата

(Request-Line):POST checklogin.aspx HTTP/1.1
Accept:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, */*
Referer:https://mysite/default.htm
Accept-Language:uk
Content-Type:application/x-www-form-urlencoded
Accept-Encoding:gzip, deflate
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: mysite
Content-Length:55
Connection:Keep-Alive
Cache-Control:no-cache


Какими свойствами TWebbrowser передать 
Accept
Content-Type:



Автор: SAVANE 11.2.2011, 22:41
Добавил 

Код

Headers :='Content-Type: application/x-www-form-urlencoded'#10#13;

 и все заработало

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)