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

前几天研究了下post的方式和服务器的接收处理,环境delphi12.2.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;

相关推荐
橘子编程2 分钟前
CSS 全栈指南:从基础到 2025 新特性
前端·css·chrome·tensorflow·less·css3·html5
筱顾大牛4 分钟前
黑马点评---用户签到、UV统计
android·服务器·uv
2401_831824967 分钟前
RESTful API设计最佳实践(Python版)
jvm·数据库·python
zjeweler8 分钟前
redis_tools_gui_v1.2 —Redis图形化漏洞利用工具
数据库·redis·web安全·缓存·安全性测试
暮冬-  Gentle°9 分钟前
更优雅的测试:Pytest框架入门
jvm·数据库·python
不会写DN9 分钟前
从依赖到自主:手写一个 ICO 文件转换器
前端·javascript·typescript·node.js
专利观察员10 分钟前
专利检索万字报告分享:《专利数据库3.0时代:2021-2025专利数据库的AI浪潮与选型逻辑重构》
数据库·人工智能·科技·专利检索·专利数据库
人道领域10 分钟前
Day | 10【苍穹外卖:SpringTask 和WebSocket 案例】
java·数据库·后端
凸头10 分钟前
后过滤召回塌陷:Redis 先召回 → ES 再过滤,如果全部被过滤掉怎么办?
数据库·redis·elasticsearch
倔强的石头10612 分钟前
Oracle 迁移 TCO 深度拆解:从隐性运维成本陷阱到全栈工具链破局
运维·数据库·oracle·kingbase