Delphi idHttpServer接收Http Get请求解码问题

引用 Httpapp单元,
使用Httpdecode函数进行解码

procedure TFrmMain.HTTPServerCommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  RespStr,recvText: string;
  msgText: string;
begin
  CoInitialize(nil);
  try
    try
      msgText := ‘Log|【‘+FormatDateTime(‘yyyy-mm-dd hh:mm:ss‘,Now)+‘】‘+Format(‘收到请求:类型:%s, 路径:%s,来自:%s:%d‘,
                             [ARequestInfo.Command, ARequestInfo.Document,
                             TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP,
                             TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort]);

      SendMessage(FrmMain.Handle,MYTHREAD_MESSAGE,Integer(@msgText),1);
      if ARequestInfo.Command = ‘GET‘ then
        recvText := Utf8ToAnsi(Httpdecode(ARequestInfo.QueryParams))   //引用 Httpapp
      else if ARequestInfo.Command = ‘POST‘ then//post
        recvText := Utf8ToAnsi(ARequestInfo.FormParams);
if (Pos(LowerCase(‘/api/getBusinessHallStatus‘), LowerCase(ARequestInfo.Document)) = 1) then //查询营业厅状态接口
      begin
        RespStr := Httpserver_getBusinessHallStatus(recvText);
      end
      begin
        RespStr := ‘URL路径未定义‘;
      end;
      AResponseInfo.ContentType := ‘text/HTML;charset=utf-8‘;
      AResponseInfo.ContentText := AnsiToUtf8(RespStr);except
      on e: Exception do
      begin
        msgText := ‘ErrorLog|【‘+FormatDateTime(‘yyyy-mm-dd hh:mm:ss‘,Now)+‘】执行HTTPServerCommandGet发生异常,原因::‘+e.Message;
        SendMessage(FrmMain.Handle,MYTHREAD_MESSAGE,Integer(@msgText),1);
      end;
    end;
  finally
    CoUninitialize;
  end;
end;

原文地址:https://www.cnblogs.com/tc310/p/8466791.html

时间: 2024-07-31 19:14:13

Delphi idHttpServer接收Http Get请求解码问题的相关文章

Delphi 自带的 Base64 编解码函数

今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个单元提供两套四个公开函数: 对流的编解码:procedure EncodeStream(Input, Output: TStream); // 编码procedure DecodeStream(Input, Output: TStream); // 解码 // 对字符串的编解码:function E

Spring+MVC Controller层接收App端请求的中文参数乱码问题。

在正文之前,说明下Filter的作用: 过滤器顾名思义就是进行过滤的,可以实现代码的定向执行和预处理.通俗点说法filter相当于加油站,request是条路,response是条路,目的地是servlet,这个加油站设在什么地方对什么数据操作可以由你来控制.备注:过滤器可以再请求和响应之前做一部分预处理,有效的过滤掉不需要的内容,而且过滤器可以被复用,节省了大量的复用代码,提高了java的代码执行效率 java的Controller层接收App的请求时,请求的参数是中文,服务器端接收到的是乱码

socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

出错的代码 #server端 import socket import struct sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() conn,addr=sk.accept() str_len1=struct.unpack('i',conn.recv(4))[0] print(sk.recv(str_len1)) str_len2=struct.unpack('i',conn.recv(4))[0] print(sk.recv

MVC 接收参数时会自动解码

MVC在接收传递过来的参数时,会自动对参数进行解码,无需手动解码 例: public ActionResult SendMsg2(string name) { return Content(name); } public ActionResult SendMsg1() { return Content(Url.Encode("大家好")); } 首先执行SendMsg1 方法,获取到“大家好”的编码,然后复制编码. 然后执行SendMsg2 方法,并将编码当做参数传递,则SendMsg

异步处理Servlet接收到的请求

在Servlet组件接收到的每个请求都会产生一个线程来处理请求并返回响应,当客户端的请求处理是一项比较耗时的过程,当有大量用户请求此Servlet时,Web容器中就会产生大量的线程,导致Web容器性能急剧下降.为了解决这一问题,Servlet提供了对请求的异步处理支持. 异步处理请求的过程为:当Servlet接收到请求之后,首先需要对请求携带的数据进行一些预处理:接着,Servlet线程将请求转交给一个异步线程来执行业务处理,线程本身则返回至容器并可以处理其它客户端的请求,此时Servlet并没

关于AngularJS中$http跨域 与 nodejs接收跨域请求(使用express-session,body-parser)的设置

1.跨域的服务端设置: 使用express挂载跨域响应中间件 app.all("*", function (req,res,next) { res.header('Access-Control-Allow-Credentials', true);// 接受携带Cookie的请求 res.header("Access-Control-Allow-Origin", "http://localhost:3000,http://192.168.1.100:3000

delphi SPCOMM 接收数据不完整!该如何解决

SPCOMM 接收数据不完整!该如何解决 SPCOMM 接收数据不完整!我作了一个 读取地磅数据的程序,是用spcomm接收的! 总共有五台地磅,其他4台地磅数据读取都正常.但是有一台接收数据的时候,总是接收不到完整的数据,基本上小于100的数据都读不到,比如:地磅上显示1234,但是接收到的数据是12.  地磅上显示60,接收不到数据. 有时地磅上什么东西都没有,但是显示接收到 5 . 这个地磅用原来硬件供应商提供的程序可以正常工作.用我写的程序,偶尔也能正常读到数据(用程序测试了半天,有几次

spring mvc 坑之PUT方法接收不到请求参数

spring mvc老是接收不到前台传递来的参数,搞了半天才知道spring mvc对PUT方法支持不好,难受!在web.xml文件中加入下面的过滤器应该可以解决: <filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> <

delphi idhttpserver 服务器

[冒泡]lazarus(964489899) 10:01:27 哥 能复制成 字符串吗?   [冒泡]lazarus(964489899) 10:01:44 我想快速输入一下   [传说]CHINY(19730622) 10:01:52 LocalDoc:=HtmlDirectory +ARequestInfo.Document ;        if  FileExists(LocalDoc) then   //文件存在          begin            if AnsiSam