Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 20:08   #1
Yazon2006
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 20
По умолчанию Проблема с авторизацией

Опыт программирования 2 дня

Мне надо авторизироваться на www.newrpg.ru.

На странице входа нашёл следующее:

<form ENCTYPE="multipart/form-data" method="post" action="http://www.newrpg.ru/login4.php">

На форме из input есть следующие параметры login, pass, diz.

Так вот получилось авторизоваться из под idHTTP:

Код:
 var params,responseres:TStringList;
begin

idhttp1.HandleRedirects:=true;
params:=TStringList.Create;
responseres:=TStringList.Create;
try
params.Add('login=XXX');
params.Add('pass=XXX');
params.Add('diz=2');

responseres.Text:=idHTTP1.Post('http://www.newrpg.ru/login4.php',params);

finally
params.free;
responseres.free;
end;
Но мне надо авторизоваться через WebBrowser, не получаеться:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  EncodedDataString: string;
  PostData: OleVariant;
  Headers: OleVariant;
  i: integer;
begin { TForm1.Button1Click }
  // First, create a URL encoded string of the data
  EncodedDataString := 'login='+HTTPEncode('XXX')+'&'+
                       'pass='+HTTPEncode('XXX')+'&'+
                       'diz='+HTTPEncode('2');

  // The PostData OleVariant needs to be an array of bytes
  // as large as the string (minus the 0 terminator)
  PostData := VarArrayCreate([0, length(EncodedDataString)-1], varByte);

  // Now, move the Ordinal value of the character into the PostData array
  for i := 1 to length(EncodedDataString) do
    PostData[i-1] := ord(EncodedDataString[i]);

  Headers := 'Content-Type: multipart/form-data;'#10#13;

  // Parameters 2 and 3 are not used, thus EmptyParam is passed.
  WebBrowser1.Navigate('http://www.newrpg.ru/login4.php',
                       EmptyParam, EmptyParam, PostData, Headers);
end; { TForm1.Button1Click }
Может я не правильно создаю PostData запрос? Там ведь применяеться multipart/form-data ...
Или может причина в кукисах?.. Непонятно ничего!

Последний раз редактировалось Yazon2006; 27.06.2011 в 20:27.
Yazon2006 вне форума Ответить с цитированием
Старый 30.06.2011, 13:05   #2
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

ну сразу видно "Опыт программирования 2 дня" , только без обид.
Вы отправляете application/x-www-form-urlencoded, а надо multipart/form-data .
Почитайте про индевский класс TIdMultipartFormData и будет вам счастье. Хотя я рекомендовал бы, для начала, поискать сайт с авторизацией application/x-www-form-urlencoded, там система такая, как Вы пытаетесь реализовать. Поучитесь для начала на них.
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 02.07.2011, 22:03   #3
Yazon2006
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 20
По умолчанию

Спасибо, буду пробовать)
Yazon2006 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с авторизацией на сайте jihot Работа с сетью в Delphi 11 31.05.2011 01:54
Проблема с авторизацией DKENT Работа с сетью в Delphi 0 14.10.2010 17:40
Проблема с авторизацией Mathouse Работа с сетью в Delphi 2 31.08.2010 16:03
проблема с авторизацией sergei2009 PHP 1 19.04.2010 17:47
проблема с авторизацией на форуме. veter_s_morya Свободное общение 13 02.09.2009 21:00