Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Посылка данных методом POST и обработка ответов

930
20 марта 2008 года
Sash1k
115 / / 27.04.2007
здравствуйте, возник такой вопрос...
есть PHP скрипт, которому нужно передать данный POST запросом, и обработать от него ответ. подскажите, как это можно реализовать на Delphi?
8
20 марта 2008 года
mfender
3.5K / / 15.06.2005
Ну вот для примера:

Скрипт post.php на удалённом сервере:
 
Код:
<?php
echo "Прибыло:\r\n";
echo "Поле1: {$_POST['Field1']}\r\n";
echo "Поле2: {$_POST['Field2']}\r\n";
?>


Форма в Delphi:
Код:
object Form1: TForm1
  Left = 287
  Top = 302
  Width = 519
  Height = 122
  AutoSize = True
  BorderWidth = 3
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Edit1: TEdit
    Left = 0
    Top = 0
    Width = 201
    Height = 21
    TabOrder = 0
  end
  object Edit2: TEdit
    Left = 0
    Top = 32
    Width = 201
    Height = 21
    TabOrder = 1
  end
  object Button1: TButton
    Left = 128
    Top = 64
    Width = 75
    Height = 25
    Caption = 'POST'
    TabOrder = 2
    OnClick = Button1Click
  end
  object Memo1: TMemo
    Left = 216
    Top = 0
    Width = 289
    Height = 89
    ScrollBars = ssVertical
    TabOrder = 3
  end
end


В uses формы не забудь вписать два модуля: IdHTTP и IdMultipartFormData

Ну, и соответственно код OnClick кнопки:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  MPS: TIdMultiPartFormDataStream;
  S: TStringStream;
begin
  HTTP := TIdHTTP.Create(nil);
  MPS := TIdMultiPartFormDataStream.Create;
  S := TStringStream.Create('');
  try
    MPS.AddFormField('Field1', Edit1.Text);
    MPS.AddFormField('Field2', Edit2.Text);
    HTTP.Post('http://youserver/post.php', MPS, S);
    Memo1.Text := S.DataString;
  finally
    MPS.Free;
    HTTP.Free;
    S.Free;
  end;
end;
930
20 марта 2008 года
Sash1k
115 / / 27.04.2007
это случайно не с использованием компонента TNMHTTP?
я начал делать с помощью wininet.pas, но так и непонял как обработывать ответы. т.е. post.php проверяет есть строка в базе, если нет, то программа составляет список (кароче, с этим я как нить разберусь).
P.S. вот код который написал:
Код:
var
 hOpenHandle, hConnectHandle: Pointer;
 host: string;
begin
 host := http://youserver/post.php; //можно взять из TEdit
 hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
 if hOpenHandle <> nil then
 begin
  hConnectHandle := InternetConnect(nil, PChar(host), 80, nil, nil, 3, 0, 0);
 end;
end;
8
20 марта 2008 года
mfender
3.5K / / 15.06.2005
Цитата: Sash1k
это случайно не с использованием компонента TNMHTTP?


Там же вполне латинскими буквами написано: TIdHTTP

930
23 марта 2008 года
Sash1k
115 / / 27.04.2007
а каким образом обрабатывать ответы от скрипта??

посылаю запрос, программа выдаёт ошибку:
Цитата:

HTTP/1.1 302 Found

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог