Передача параметров Cgi-скрипту...
Подскажите как отправить параметры скрипту, находящемуся на севере (напр., http://some_site.ru/script.cgi). Вот как это сделано в HTML:
<html><head>
<title>скрипт</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</td>
<td class="apptextPlain" valign="top">
<form action="http://some_site.ru/script.cgi" method="post" name="Send_Message">
<table>
<tbody>
<tr>
<td><div align="center">Номер: <select name="Prefix"><option value="7904">123</option><option value="123">456</option><option value="789">456</option></select><input size="14" maxlength="7" name="phone" type="text"></div></td>
</tr>
<tr>
<td>Текст:
<textarea name="message" rows="5" cols="40">
</textarea>
</td> </tr>
<tr>
<td colspan="2" class="table1"><div align="center"><input value="''Послать''" type="submit"><input value="Очистить" type="reset"></td>
</tr>
</tbody>
</table>
</form>
</body></html>
(я в html не очень силён..., поэтому выкладываю полностью всю страничку...)
Т.е. как сделать в программе чтобы она аналогичным образом передавала параметры скрипту? Может есть специальный компонент/модуль? Или может самому генерить html-документ и заполнять в нём все формы, а потом уже из сгенереного документа передавать скрипту (только как?)
Пишу в Delphi 7.
Всем спаибо за ответы!
Привет, посмотри вот здесь
Цитата:
Originally posted by AnD1
Т.е. как сделать в программе чтобы она аналогичным образом передавала параметры скрипту? Может есть специальный компонент/модуль? Или может самому генерить html-документ и заполнять в нём все формы, а потом уже из сгенереного документа передавать скрипту (только как?)
Т.е. как сделать в программе чтобы она аналогичным образом передавала параметры скрипту? Может есть специальный компонент/модуль? Или может самому генерить html-документ и заполнять в нём все формы, а потом уже из сгенереного документа передавать скрипту (только как?)
Там написано куда и каким методом передавать: http://some_site.ru/script.cgi method=Post
Именно так и следует сделать.
В D7 для этого удобно использовать Indy. В частности можно попробовать воспользоваться TIdHTTP.
Цитата:
Originally posted by mfender
Там написано куда и каким методом передавать: http://some_site.ru/script.cgi method=Post
Именно так и следует сделать.
В D7 для этого удобно использовать Indy. В частности можно попробовать воспользоваться TIdHTTP.
Там написано куда и каким методом передавать: http://some_site.ru/script.cgi method=Post
Именно так и следует сделать.
В D7 для этого удобно использовать Indy. В частности можно попробовать воспользоваться TIdHTTP.
Мне уже говорили про этот компонент.
Только какие в нём свойства нужно использовать.
Передача , кажется идет через idHttp.Post (...) только какие параметры и всё остальное нужно писать???
Если не сложно, то приведите, пожалуйста, кусок кода (для моего случая... или что-нибудь подобное...)
Это форма:
object Form1: TForm1
Left = 242
Top = 333
Width = 870
Height = 640
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 Memo1: TMemo
Left = 144
Top = 40
Width = 377
Height = 289
ScrollBars = ssVertical
TabOrder = 0
end
object Button1: TButton
Left = 640
Top = 200
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
object Edit1: TEdit
Left = 544
Top = 64
Width = 281
Height = 21
TabOrder = 2
end
object Memo2: TMemo
Left = 544
Top = 96
Width = 281
Height = 89
Lines.Strings = (
'Memo2')
ScrollBars = ssVertical
TabOrder = 3
end
object ih: TIdHTTP
MaxLineAction = maException
ReadTimeout = 0
AllowCookies = True
ProxyParams.BasicAuthentication = False
ProxyParams.ProxyPort = 0
Request.ContentLength = -1
Request.ContentRangeEnd = 0
Request.ContentRangeStart = 0
Request.ContentType = 'text/html'
Request.Accept = 'text/html, */*'
Request.BasicAuthentication = False
Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
HTTPOptions = [hoForceEncodeParams]
Left = 64
Top = 48
end
end
Это то, что внутри юнита:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
ih: TIdHTTP;
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
URL: String = 'адрес_скрипта';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var FormData: TStringList;
begin
FormData := TStringList.Create;
FormData.Add(Edit1.Name + '=' + Edit1.Text);
FormData.Add(Memo2.Name + '=' + Memo2.Text);
Memo1.Text := ih.Post(URL, FormData);
end;
end.
На другом краю, напиши функцию, которая примет переданные данные. Если на PHP, то просто print_r($_POST); В Memo1.Text будет результат работы скрипта после отправки внего данных этой формы..
Цитата:
Originally posted by mfender
Ну, примерно так. Специально набросал простенький примерчик.
<...>
На другом краю, напиши функцию, которая примет переданные данные. Если на PHP, то просто print_r($_POST); В Memo1.Text будет результат работы скрипта после отправки внего данных этой формы..
Ну, примерно так. Специально набросал простенький примерчик.
<...>
На другом краю, напиши функцию, которая примет переданные данные. Если на PHP, то просто print_r($_POST); В Memo1.Text будет результат работы скрипта после отправки внего данных этой формы..
Спасибо огромное!!!
Сейчас буду разбираться ....