delphi post数据与对应的接收方式


本文整理自网络,侵删。

 前几天研究了下post的方式和服务器的接收处理,环境delphi10.1,首先说客户端post数据,采用idhttp,有两种方式,一种是字符串,一种是流如下:

1.psot字符串的方式

var
  s: string;
  stm: TStringStream; //接收返回内容
  send:TStringList;   //post的内容
begin
  send:=TStringList.Create;

  send.Text:='要post的内容';
  //send.add('name=张三'); //也可以按照不同的参数赋值
  //send.add('sex=男');
  stm := TStringStream.Create(s, TEncoding.UTF8);

  stm.Position := 0;
  try
    IdHTTP1.Post(url, send , stm);
    Memo2.Lines.Text:=stm.DataString; //服务端返回的内容
  except
    result := false;
  end;
  stm.Free;

  send.free;

2.通过流的方式post

var
  s,res:string;
  stm:TStringStream;
begin
  s:='要post的内容,比如说xml格式的文本';
  stm := TStringStream.Create(s, TEncoding.UTF8);
  stm.Position := 0;
  try
    res:=IdHTTP1.Post('url地址', stm);
    Memo2.Lines.Text:=res; //服务端返回的内容
  finally
    stm.Free;

  end;

下面是服务端接收处理,服务端采用IdHTTPServer,在OnCommandGet事件中处理数据

 ARequestInfo.ContentType := 'text/html;Charset=UTF-8';
  path := ARequestInfo.Document; //访问的路径
  if UpperCase(ARequestInfo.command) = 'POST' then

  begin
 //接收post字符串的处理
 // memo1.Lines.Add(arequestinfo.Params.Values['name']) ;//按参数名称接收
// memo1.Lines.Add(arequestinfo.Params.Values['sex']); 

//    Memo1.Lines.Add('FormParams:'+ARequestInfo.FormParams); //所有数据
//    Memo1.Lines.Add('Params:'+ARequestInfo.Params.Text);
//    aRequestContent:= ARequestInfo.UnparsedParams;
    aRequestContent := ARequestInfo.Params.GetText;
   //下面是接收数据流的处理过程

   // if (ARequestInfo.PostStream <> nil) and (ARequestInfo.PostStream.Size > 0) then
   // bergin
   //      ARequestInfo.PostStream.Position := 0;

   //      aRequestContent := StreamToString(ARequestInfo.PostStream);
   // end;

   aRequestContent := tiduri.URLDecode(aRequestContent);  //解决汉字乱码问题
// 数据处理过程

......

AResponseInfo.ContentType := 'text/html';
AResponseInfo.CharSet := 'utf-8';
AResponseInfo.ContentText := '根据处理过程返回客户端信息';
AResponseInfo.WriteContent;
--------------------- 

原文:https://blog.csdn.net/zflybird/article/details/80202485 

相关阅读 >>

Delphi获取系统字体列表

Delphi 阿里云发送短信的Delphi单元

Delphi system.messaging.pas例子

Delphi xe datasnap服务器获取客户端ip地址

Delphi 将整数转换为罗马数字

Delphi self-delete程序

Delphi获取宽带ip

Delphi 实现卸载windows应用程序(类似360软件管家-卸载程序)

Delphi中如何将一整个文件读入内存

Delphi的cpu调试窗口

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...