Delphi 中使用HTTP POST和GET的表单

093gszye  于 2023-03-29  发布在  其他
关注(0)|答案(1)|浏览(283)

我在Borland Delphi 3.0(旧版Delphi)中使用HTTP组件。目前还没有Indy TIdHTTP组件可用。只是使用HTTP组件。
我使用POSTGET来处理我的程序应用程序(Radio Calculator v3.50)的注册表单。My program
计划在这里。
POST表单:
包括UsernameEmailPhone numberJPG file(转账到我的账户)--〉有4个参数。
首先,我使用POST为每个不同的Username“处理”不同的KEY
我使用 Delphi 中的另一个HTTP进程(GET),几分钟后(假设15分钟),获取注册人的UsernameKEY,无论他们在家里还是在世界上的任何地方。
他们将使用PHP从我的Web服务器自动获取DATA
我的问题:
1.如何在HTTP Delphi 组件中使用POSTGET命令?对于所有4个参数,我使用类似帖子中的简单编码:

function PostExample: string; 
var 
  lHTTP: TIdHTTP; 
  lParamList: TStringList; 
begin 
  lParamList := TStringList.Create;
  lParamList.Add('id=1'); 
  lHTTP := TIdHTTP.Create; 

  try 
    Result := lHTTP.Post('http://blahblahblah...', lParamList); 
  finally 
    lHTTP.Free; 
    lParamList.Free; 
  end; 
end;

如何处理POSTGET的结果?哪些变量将使用此语法填充?如何使用此语法进行进一步处理?
1.这一程序能正常运行吗?还是有一些证券泄漏?
1.我使用POST HTTP,发送这些参数,在我的Web服务器中使用PHP处理它,几分钟后我使用GET获得原始结果。在这个过程中我错过了什么吗?应该在POST之后立即请求GET吗?或者我应该怎么做?我应该改变HTTP到TWebBrowser只?只是在 Delphi 中做一个Web浏览器?所以我不必认真考虑HTTP过程,只使用我的PHP编程能力代替?
编码如何使用TIdHTTP.Post()到PHP:
x一个一个一个一个x一个一个二个x
i ve Upload IT IN GITHUB NGAB. Here 100% Works

1zmg4dgp

1zmg4dgp1#

Delphi 3比Indy早了好几年。在Indy之前,Delphi附带了一个VCL组件套件,称为FastNet(后来的NetMasters),但我不知道它们是否可以一直追溯到Delphi 3。在FastNet之前,Delphi附带了一套来自NetManage的ActiveX控件。
如果您使用的是NetManage的HTTP ActiveX控件,那么我无法帮助您。我没有关于该控件的任何信息。
如果您使用的是FastNet/NetMasters TNMHTTP组件,那么您所展示的Indy代码 * 可能 * 会转换为如下的TNMHTTP代码(FastNet/NetMaster组件已经死了很长时间,并且没有它们的幸存文档,所以我只是基于查看CBuilder v5中附带的NMHTTP.hpp C头文件,由于 Delphi /BCB没有提供FastNet/NetMasters源代码,或者我可以访问,无论如何):

procedure TForm1.Button1Click(Sender: TObject);
begin
  NMHTTP1.Post('http://localhost/test/hallo.php', 'a=hello');
end;

// NHTTP1.OnSuccess event handler
procedure TForm1.NMHTTP1Success(Cmd: CmdType);
begin
  ShowMessage('Success: ' + NMHTTP1.Body);
end;

// NHTTP1.OnFailure event handler
procedure TForm1.NMHTTP1Failure(Cmd: CmdType);
begin
  ShowMessage('Failed');
end;

或者:

type
  TMyNMHTTP = class(TNMHTTP)
  public
    constructor Create(AOwner: TComponent); override;
    procedure HTTPSuccess(Cmd: CmdType);
    procedure HTTPFailure(Cmd: CmdType);
  end;

constructor TMyNMHTTP.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  OnSuccess := HTTPSuccess;
  OnFailure := HTTPFailure;
end;

procedure TMyNMHTTP.HTTPSuccess(Cmd: CmdType);
begin
  Tag := 1;
end;

procedure TMyNMHTTP.HTTPFailure(Cmd: CmdType);
begin
  Tag := 2;
end;

function PostExample: string; 
var 
  lHTTP: TMyNMHTTP;
begin 
  Result := '';
  lHTTP := TMyNMHTTP.Create(nil);
  try 
    lEvents.Tag := 0;
    lHTTP.Post('http://blahblahblah...', 'id=1');
    repeat
      Application.ProcessMessages;
    until lHTTP.Tag <> 0;
    if lHTTP.Tag = 1 then
      Result := lHTTP.Body;
  finally 
    lHTTP.Free; 
  end; 
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Response: string;
begin
  Response := PostExample();
  if Response <> '' then
    ShowMessage('Success: ' + Response)
  else
    ShowMessage('Failed');
end;

相关问题