Форум: "Сети";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];
ВнизКоннект к веб серверу Найти похожие ветки
← →
Roman001 (2005-04-18 15:50) [0]Подскажите плз. как мне зарегистрироваться на веб серваке, который куки использует, я так понял idHTTP надо юзать.
Качаю страничку с логином, подставляю данные, потом пост делаю,
а мне в ответ страничка с логином :(.
Может пример какой есть...
← →
Чапаев © (2005-04-18 16:32) [1]Код кидай... Если по словам судить, всё правильно делаешь...
← →
Roman001 (2005-04-19 10:58) [2]Сам сервак у меня на виртуальной мошине живет, логон идет с любого эксплорера нормально
unit Web;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
ConnectBtn: TButton;
Disconnect: TButton;
HTTP: TIdHTTP;
procedure ConnectBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
St, Resp:TFileStream;
implementation
{$R *.dfm}
procedure TForm1.ConnectBtnClick(Sender: TObject);
begin
// загружаем предварительно скаченную по адресу
// http://test.ru/login.php
// страничку, где уже прописан логин и пароль
St:=TFileStream.Create("Путь\StartPage.html",fmOpenRead);
Resp:=TFileStream.Create("Путь\HomePage.html",fmCreate);
HTTP.Post("http://test.ru/login.php",St,Resp);
St.Free;
Resp.Free;
ShowMessage("ok");
end;
← →
Чапаев © (2005-04-19 12:14) [3]> // загружаем предварительно скаченную по адресу
> // http://test.ru/login.php
> // страничку, где уже прописан логин и пароль
Что-то мне это не нравится... В этом StartPage.html должно быть записано что-то вроде login=DirtyCheater&password=VeryComplexPassword. Что конкретно там должно быть прописано -- надо смотреть текст этой самой "предварительно скачанной странички".
← →
DiamondShark © (2005-04-19 12:30) [4]А куки за тебя дядя Вася будет сохранять?
← →
Roman001 (2005-04-19 13:35) [5]А как сохрянять то их...?
Вот сама страничка
я логин и пароль прописал в полях value, или не прав...?
я так понимаю, что
"login=DirtyCheater&password=VeryComplexPassword" :)
только для Get метода
Сам ПХП скрипт не я писал, чего там, сказать врядли смогу, но
без кук с броузера не залогиниться.
На HomePage.html вообще только приветствие
<html>
<body>
<table>
<tr>
<td valign=top align=center>
<form action=http://test.ru/login.php method=post>
<table border=0>
<tr><td>Логин:</td><td><input type=text name=login value="Roman"></td></tr>
<tr><td>Пароль:</td><td><input type=password name=pass value="test"></td></tr>
</table>
<input type=submit value="Войти">
</form>
</td>
</tr>
</table>
</body>
</html>
← →
DiamondShark © (2005-04-19 15:33) [6]
> Roman001 (19.04.05 13:35) [5]
> А как сохрянять то их...?
Как угодно.
Сервер возвращает заголовок Set-Cookie, клиент должен его запомнить и посылать в запросах заголовок Cookie.
Подробности в RFC 2109
← →
Roman001 (2005-04-21 07:03) [7]То есть нужно обрабатывать его руками даже если свойство AllowCookies=true
← →
Чапаев © (2005-04-21 11:44) [8]> А куки за тебя дядя Вася будет сохранять?
А кто сказал, что там есть куки?
> я так понимаю, что [...] только для Get метода
Неправильно. В GET ты передаёшь что-то вроде
GET http://www.url.com?login=qwerty&pass=asdfgh HTTP/1.1\n
Host: www.url.com\n\n
В POST:
POST http://www.url.com HTTP/1.1\n
Host: www.url.com\n
Content-Length: 24\n
\n
login=qwerty&pass=asdfgh
Возможно, ещё надо добавить заголовок Content-Type: x-www-form-url-encoded, точно не помню...
← →
DiamondShark © (2005-04-21 12:42) [9]
> Чапаев © (21.04.05 11:44) [8]
> А кто сказал, что там есть куки?
Аффтар сказал: "как мне зарегистрироваться на веб серваке, который куки использует"
Да и по логике вещей так получается. Если сервер требует логина, а HTTP протокол по определению stateless, то значит там должны быть куки.
А автору я бы настоятельно рекомендовал перед тем, как пользоваться навороченными компонентами, чётко уяснить, что там происходит "унутрях". Тем более, что ничего сложного там нет.
← →
Чапаев © (2005-04-21 12:59) [10]> Аффтар сказал: "как мне зарегистрироваться на веб серваке,
> который куки использует"
Точно. Афтар жжот.
> Если сервер требует логина, а HTTP протокол по определению
> stateless, то значит там должны быть куки.
Хм... Почему? :-| Зачем куки?
> Тем более, что ничего сложного там нет.
Эт смотря какие задачи ставить. ;-)
← →
DiamondShark © (2005-04-21 13:11) [11]
> Хм... Почему? :-| Зачем куки?
Затем, что логин подразумевает наличие (логического) устойчивого соединения. А протокол HTTP по определению такового не обеспечивает.
> > Тем более, что ничего сложного там нет.
> Эт смотря какие задачи ставить. ;-)
Сложность протокола от задачи не зависит.
← →
Чапаев © (2005-04-21 13:27) [12]> Затем, что логин подразумевает наличие (логического)
> устойчивого соединения. А протокол HTTP по определению
> такового не обеспечивает.
Ну, я привык, что сервер в ответ на мой запрос с логином-паролем переадресует меня на страничку с неким уникальным идентификатором в адресе... Так что и без куков обходится.
← →
Roman001 (2005-04-22 06:01) [13]//ты передаёшь что-то вроде
:( передаешь..., там поток на входе и на выходе
в исходящий поток чтоль это пихать
POST http://www.url.com HTTP/1.1\n
Host: www.url.com\n
Content-Length: 24\n
\n
login=qwerty&pass=asdfgh
мож пример есть где ЭТО работает
← →
Чапаев © (2005-04-22 11:08) [14]> мож пример есть где ЭТО работает
Ну, в твоём случае это работать не будет, 100%... Это работало бы, если б ты использовал IdTcpClient, в примеру.
А вообще лучше всего RTFM RFC 2048.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 4.568 c