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

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

Коннект к веб серверу


Roman001 ©   (2005-04-18 15:50:00) 

Подскажите плз. как мне зарегистрироваться на веб серваке, который куки использует, я так понял idHTTP надо юзать.
Качаю страничку с логином, подставляю данные, потом пост делаю,
а мне в ответ страничка с логином :(.
Может пример какой есть...


Чапаев   (2005-04-22 11:08:00) [1]

> мож пример есть где ЭТО работает
Ну, в твоём случае это работать не будет, 100%... Это работало бы, если б ты использовал IdTcpClient, в примеру.

А вообще лучше всего RTFM RFC 2048.


Roman001   (2005-04-22 06:01:00) [2]

//ты передаёшь что-то вроде
:( передаешь..., там поток на входе и на выходе
в исходящий поток чтоль это пихать


POST http://www.url.comHTTP/1.1\n
Host: www.url.com\n
Content-Length: 24\n
\n
login=qwerty&pass=asdfgh


мож пример есть где ЭТО работает


Чапаев   (2005-04-21 13:27:00) [3]

> Затем, что логин подразумевает наличие (логического)
> устойчивого соединения. А протокол HTTP по определению
> такового не обеспечивает.
Ну, я привык, что сервер в ответ на мой запрос с логином-паролем переадресует меня на страничку с неким уникальным идентификатором в адресе... Так что и без куков обходится.


DiamondShark   (2005-04-21 13:11:00) [4]


> Хм... Почему? :-| Зачем куки?

Затем, что логин подразумевает наличие (логического) устойчивого соединения. А протокол HTTP по определению такового не обеспечивает.


> > Тем более, что ничего сложного там нет.
> Эт смотря какие задачи ставить. ;-)

Сложность протокола от задачи не зависит.


Чапаев   (2005-04-21 12:59:00) [5]

> Аффтар сказал: "как мне зарегистрироваться на веб серваке,
> который куки использует"
Точно. Афтар жжот.

> Если сервер требует логина, а HTTP протокол по определению
> stateless, то значит там должны быть куки.
Хм... Почему? :-| Зачем куки?

> Тем более, что ничего сложного там нет.
Эт смотря какие задачи ставить. ;-)


DiamondShark   (2005-04-21 12:42:00) [6]


> Чапаев ©   (21.04.05 11:44) [8]
> А кто сказал, что там есть куки?

Аффтар сказал: "как мне зарегистрироваться на веб серваке, который куки использует"
Да и по логике вещей так получается. Если сервер требует логина, а HTTP протокол по определению stateless, то значит там должны быть куки.

А автору я бы настоятельно рекомендовал перед тем, как пользоваться навороченными компонентами, чётко уяснить, что там происходит "унутрях". Тем более, что ничего сложного там нет.


Чапаев   (2005-04-21 11:44:00) [7]

> А куки за тебя дядя Вася будет сохранять?
А кто сказал, что там есть куки?

> я так понимаю, что [...] только для Get метода
Неправильно. В GET ты передаёшь что-то вроде

GET http://www.url.com?login=qwerty&pass=asdfghHTTP/1.1\n
Host: www.url.com\n\n


В POST:

POST http://www.url.comHTTP/1.1\n
Host: www.url.com\n
Content-Length: 24\n
\n
login=qwerty&pass=asdfgh

Возможно, ещё надо добавить заголовок Content-Type: x-www-form-url-encoded, точно не помню...


Roman001   (2005-04-21 07:03:00) [8]

То есть нужно обрабатывать его руками даже если свойство AllowCookies=true


DiamondShark   (2005-04-19 15:33:00) [9]


> Roman001   (19.04.05 13:35) [5]
> А как сохрянять то их...?

Как угодно.

Сервер возвращает заголовок Set-Cookie, клиент должен его запомнить и посылать в запросах заголовок Cookie.

Подробности в RFC 2109


Roman001   (2005-04-19 13:35:00) [10]

А как сохрянять то их...?

Вот сама страничка
я логин и пароль прописал в полях value, или не прав...?
я так понимаю, что
"login=DirtyCheater&password=VeryComplexPassword" :)
только для Get метода

Сам ПХП скрипт не я писал, чего там, сказать врядли смогу, но
без кук с броузера не залогиниться.
На HomePage.html вообще только приветствие










Логин:
Пароль:










DiamondShark   (2005-04-19 12:30:00) [11]

А куки за тебя дядя Вася будет сохранять?


Чапаев   (2005-04-19 12:14:00) [12]

>  //  загружаем предварительно скаченную по адресу
>  //   http://test.ru/login.php
>  //  страничку, где уже прописан логин и пароль
Что-то мне это не нравится... В этом StartPage.html должно быть записано что-то вроде login=DirtyCheater&password=VeryComplexPassword. Что конкретно там должно быть прописано -- надо смотреть текст этой самой "предварительно скачанной странички".


Roman001   (2005-04-19 10:58:00) [13]

Сам сервак у меня на виртуальной мошине живет, логон идет с любого эксплорера нормально

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-18 16:32:00) [14]

Код кидай... Если по словам судить, всё правильно делаешь...


Наверх

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