Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод post, Передать данные методом post 
:(
    Опции темы
drwatson
  Дата 17.3.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Мне надо загрузить страницу domain/page.php, но на нее в браузере попадаешь введя логин и пароль. логин и пароль передаются методом post (username=xxxxx&password=123456). Помогите пожалуйста загрузить эту страницу сразу в TWebBrowser.

или предложите другие способы как загрузить эту страницу
PM MAIL   Вверх
Демо
Дата 17.3.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(drwatson @ 17.3.2006, 10:40 Найти цитируемый пост)
но на нее в браузере попадаешь введя логин и пароль.


Вот именно - введя логин и пароль. Но ведь не на этой странице имя и пароль вводится. Так что пляши с той страницы, где спрашиваются учетные данные.
Добавлено @ 11:45
Вопрос: Как заполнить форму и отправить на сервер?

Для того, чтобы отправить форму на сервер, необходимо:

1. Найти форму в исходном тексте страницы.
Для этога найти в исходном тексте страницы теги <form>...</form>

Например:

Код

<form method=GET action=http://localhost/cgi-bin/mget?>
<input type=text name=name1 value="имя" size="40" maxlength="20"><br>
<input type=text name=name2 value="фамилия" size="40" maxlength="20"><br>
<input type=submit>
</form>



2. Определить метод, который используется для отправки данных. В указанном выше примере это "GET" - form method=GET
3. Найти поля, которые необходимо заполнить.

В примере это:

Код

<input type=text name=name1 value="имя" size="40" maxlength="20"><br>
<input type=text name=name2 value="фамилия" size="40" maxlength="20"><br>



4. Используя компоненты для работы с протоколом TCP/IP, сформировать строку запроса.
Для определенности пусть это будет компонент TIdHTTP из пакета Indy, входящий в стандартный набор компонент Delphi.
--------------

Сформируем строку для отправки на сервер для нашего примера:
Пусть нам нужно отправить значениядля полей: имя=Vasya, фамилия=Pupkin.

В этом случае запрос будет выглядеть так:


Код

var
  s: String;
begin
  s := IdHTTP1.Get('http://localhost/cgi-bin/mget?name1=Vasya&name2=Pupkin')

--------------

В случае, если форма использует метод POST:

Код

<form method=POST action=http://localhost/cgi-bin/mget?>
<input type=text name=name1 value="имя" size="40" maxlength="20"><br>
<input type=text name=name2 value="фамилия" size="40" maxlength="20"><br>
<input type=submit>
</form>



формируем запрос для отправки несколько по-другому:

Код

var
  tL: TStringList;
  s: String;
begin
  tL := TStringList.Create;
  tL.Add('name1=Vasya');
  tL.Add('name2=Pupkin');
  try
    s := IdHTTP1.Post('http://localhost/cgi-bin/mget',tL);
  finally
    tL.Free;
  end;

------------------


--------------------
    
PM MAIL ICQ Skype   Вверх
Snowy
Дата 17.3.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Из DRKB:
Код
procedure TForm1.SubmitPostForm; 
var 
  strPostData: string; 
  Data: Pointer; 
  URL, Flags, TargetFrameName, PostData, Headers: OleVariant; 
begin 
  strPostData := 'FIRSTNAME=Hans& LASTNAME=Gulo& NOTE=thats+it';  
  PostData := VarArrayCreate([0, Length(strPostData) - 1], varByte);  
  Data := VarArrayLock(PostData);  
  try  
    Move(strPostData[1], Data^, Length(strPostData));  
  finally  
    VarArrayUnlock(PostData);  
  end;  
  URL := 'http://127.0.0.1/cgi-bin/register.pl';  
  Flags := EmptyParam;  
  TargetFrameName := EmptyParam;  
  Headers := EmptyParam; // TWebBrowse  
  WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);  
end;

PM MAIL   Вверх
kирилл
Дата 12.7.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.5.2005

Репутация: нет
Всего: нет



Snowy,  У меня этот код почему-то не работает
Код

  IE : IWebbrowser2;
  Data : Pointer;
  URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
  Str : String;
......................

         Str := 'F=qwe';
         PostData := VarArrayCreate([0, Length(Str) - 1], varByte);
         Data := VarArrayLock(PostData);
         try
           Move(Str[1], Data^, Length(Str));
         finally
           VarArrayUnlock(PostData);
         end;
         URL := 'http://127.0.0.1/index.php';
         Flags := EmptyParam;
         TargetFrameName := EmptyParam;
         Headers := EmptyParam; 
         IE.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);


код index.php
Код

<?php
 echo('f = '.$HTTP_POST_VARS["f"]);
?>


Результат: "f = " 
PM MAIL   Вверх
Snowy
Дата 12.7.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



А так:
Код
Str := 'f=qwe';

PM MAIL   Вверх
kирилл
Дата 12.7.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.5.2005

Репутация: нет
Всего: нет



Цитата(Snowy @  12.7.2006,  15:52 Найти цитируемый пост)
А так:
Выделить всёкод Pascal/Delphi
1:
    
Str := 'f=qwe';

И так не работает. Переменные регистронезависимы 
PM MAIL   Вверх
dvamaster
Дата 21.7.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 2
Всего: 10



Могет так прокатит

Код

PostData := VarArrayCreate([0, 0], varByte);
PostData[0] := Str;


вместо

Код

  PostData := VarArrayCreate([0, Length(strPostData) - 1], varByte);  
  Data := VarArrayLock(PostData);  
  try  
    Move(strPostData[1], Data^, Length(strPostData));  
  finally  
    VarArrayUnlock(PostData);  
  end;
 


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
Bodrox
Дата 8.4.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.4.2004
Где: Чебоксары

Репутация: нет
Всего: нет



Вопрос из разряда "наверное, уже задавали"

Есть ссылка, на которой есть данные о биллинге у провайдера, например http://local_serv/client

Зайти на неё можно только указав логин и пароль, но. Но пароль-то спрашивает браузер, а не заполняешь поля в странице.... Как быть?

У старого провайдера было проще - там поля заполнял на странице. Теперчь вот так. На старом прога с IdHTTP и юзая POST нормально работала, а счас выдаёт ответ что-то типа "401 Authorized Required" :(

Или вопрос лучше задать в Сетях?

Это сообщение отредактировал(а) Bodrox - 8.4.2009, 13:27
PM MAIL   Вверх
Anatoliy99
Дата 8.7.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.7.2007

Репутация: нет
Всего: нет



Цитата

У меня этот код почему-то не работает


Если
Headers := EmptyParam; 
то работать не будет. Надо

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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.