Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.02.2011, 08:26
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию Пост запрос

Как отправить пост запрос на сервер, и получить от сервера ответ
Ответить с цитированием
  #2  
Старый 14.02.2011, 09:26
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

indy-->idhttp.post
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #3  
Старый 14.02.2011, 09:32
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

Я только начал изучать дельфи, и у меня задача отправить с помощью xml в дельфи запрос на сервер, и получить ответ от сервера. Запрос у меня на получение реквизитов пользователя
Код:
procedure TForm1.Button1Click(Sender: TObject);

var
Stream: TIdMultipartFormDataStream;
sl:tstringlist;
begin
Stream := TIdMultipartFormDataStream.Create;
sl:=tstringlist.create;
try
//sl.LoadFromFile('C:\zapros.xml');
sl.add('<?xml version="1.0" encoding="windows-1251"?>');
sl.add('<document>');
sl.add('<function name="employerInfo">');
sl.add('<param name="login">ivanov</param>');
sl.add('<param name="pass">f8b932c80d0b2e6bf025149a4fa68dfc</param>');
sl.add('</function>');
sl.add('<client name="SomeProgram" version="1.0"/>');
sl.add('</document>');

  {Stream.AddFile('filename', 'C:\zapros.xml', 'xml');
  Form1.IdHTTP1.HandleRedirects := True;
  Form1.Memo1.text:=Form1.IdHTTP1.Post('http://xxx.xxx.xxx.xxx/api/functions.php', Stream );}
  Form1.Memo1.text:=idhttp1.post('http://xxx.xxx.xxx.xxx/api/functions.php',sl);

finally
  //Stream.Free;
  end;
Админ: Пользуемся тегами!

Где у меня ошибка, подскажите плз...

Последний раз редактировалось Admin, 14.02.2011 в 10:30.
Ответить с цитированием
  #4  
Старый 14.02.2011, 09:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

пример:
Код:
var
  stringlist: TStringList;
begin
  stringlist:=TStringList.Create;
  try
    stringlist.Add('vb_login_username=пользователь');
    stringlist.Add('vb_login_password=пароль');
    stringlist.Add('cookieuser=1');
    stringlist.Add('s=');
    stringlist.Add('securitytoken=guest');
    stringlist.Add('do=login');
    stringlist.Add('vb_login_md5password=');
    stringlist.Add('vb_login_md5password_utf=');
    IdHTTP1.Post('http://сервер.ru/login.php?do=login', stringlist);
  finally
    stringlist.Free;
  end;
end;
т.е. в stringlist нужно добавлять поля с формы авторизации
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 14.02.2011, 11:27
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

NumLock, мне при нажатии button он должен мне вывести результат, то есть получить реквизиты, я сделал точно также, но пока результат не выдается (((
Ответить с цитированием
  #6  
Старый 14.02.2011, 11:35
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
...
    Memo1.Text:=IdHTTP1.Post('http://сервер.ru/login.php?do=login', stringlist);
    Memo2.Text:=IdHTTP1.Response.RawHeaders.Text;
...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 14.02.2011, 11:52
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

Вот что у меня получилось:
Код:
var
  stringlist: TStringList;
begin
  stringlist:=TStringList.Create;
  try

stringlist.Add('vb_login_username=bmb');
    stringlist.Add('vb_login_password=f8b932c70d0b2e6bf071729a4fa68dfc');
    stringlist.Add('cookieuser=1');
    stringlist.Add('s=');
    stringlist.Add('securitytoken=guest');
    stringlist.Add('do=login');
    stringlist.Add('vb_login_md5password=');
    stringlist.Add('vb_login_md5password_utf=');
        Memo1.Text:=IdHTTP1.Post('http://xxx.xxx.xxx.xxx/api/functions.php?do=login', stringlist);
    Memo2.Text:=IdHTTP1.Response.RawHeaders.Text;

  finally
    stringlist.Free;
  end;
Админ: Напоминаю по теги! При рецедиве последуют санкции.

К сожалению, что-то опять не-то (((

Последний раз редактировалось Admin, 16.02.2011 в 13:19.
Ответить с цитированием
  #8  
Старый 14.02.2011, 11:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

эти ж поля: vb_login_username, vb_login_password и т.д. для каждого сервера свои!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 14.02.2011, 12:12
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

Извини если успел надоесть, напиши плз пример. Если я напишу 'vb_bmb_123=пользователь' - это будет правильно?
Ответить с цитированием
  #10  
Старый 16.02.2011, 12:31
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

Вопрос в том что как именно это писать. Так как я ламер в программировании прошу помощи: если я напишу ('vb_login_username=bmb') это будет правильно? Или нужно писать ('vb_login_bmb')? Please HELP
Ответить с цитированием
  #11  
Старый 16.02.2011, 13:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

post запрос обычно формируется в виде:
ключ1=значение1&ключ2=значение2&ключ3=значение3...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 16.02.2011, 13:17
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

То есть если я напишу ('vb_login_username=bmb'), то это будет правильно, да?
Ответить с цитированием
  #13  
Старый 16.02.2011, 13:20
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от prestuplenie
То есть если я напишу ('vb_login_username=bmb'), то это будет правильно, да?
нельзя сказать однозначно, ибо пока не ясно, что хочет получать от клиента ссервер. нужно уточнить задачу. как говорит Номер Пятый: more info
могу лишь предположить: login=ivanov&pass=f8b932c80d0b2e6bf025149a4fa68dfc
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #14  
Старый 16.02.2011, 13:31
prestuplenie prestuplenie вне форума
Прохожий
 
Регистрация: 14.02.2011
Сообщения: 30
Репутация: 10
По умолчанию

Задача состоит в том что нужно получить от сервера ответ, в моем случае реквизиты пользователя. В программе я ввожу данные (имя,пароль и <function name="employerInfo"> - запрос на получение реквизитов), а так как на сервере есть данные на пользователя, сервер должен вывести на экран реквизиты
Ответить с цитированием
  #15  
Старый 16.02.2011, 14:05
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

все-равно я ничего не понял. будем гадать дальше
Код:
var
  stringstream: TStringStream;
begin
  stringstream:=TStringStream.Create('');
  try
    stringstream.WriteString('<?xml version="1.0" encoding="windows-1251"?>');
    stringstream.WriteString('<document>');
    stringstream.WriteString('<function name="employerInfo">');
    stringstream.WriteString('<param name="login">ivanov</param>');
    stringstream.WriteString('<param name="pass">f8b932c80d0b2e6bf025149a4fa68dfc</param>');
    stringstream.WriteString('</function>');
    stringstream.WriteString('<client name="SomeProgram" version="1.0"/>');
    stringstream.WriteString('</document>');
    IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
    IdHTTP1.Request.ContentLength:=stringstream.Size;
    stringstream.Position:=0;
    Memo1.Text:=IdHTTP1.Post('http://xxx.xxx.xxx.xxx/api/functions.php', stringstream);
  finally
    stringstream.Free;
  end;
end;
если заменить xxx.xxx.xxx.xxx на правильное значение что будет в результате?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter