Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

Коннект к веб серверу   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
4-1117814871
MANIAC_K
2005-06-03 20:07
2005.07.31
Перехват сообщения...


1-1121168265
Viktop
2005-07-12 15:37
2005.07.31
Порядковый номер элемента TTreeView


1-1121063954
Andy BitOff
2005-07-11 10:39
2005.07.31
Word: запустить, проследить, узнать о результатах.


4-1117696813
Chaser
2005-06-02 11:20
2005.07.31
Вытащить текст из компонента, находящегося в другой программе


4-1117384202
cherrex
2005-05-29 20:30
2005.07.31
Delphi и ABBYY FineReader