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

Posted tc310

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 

以上是关于Delphi idHttpServer接收Http Get请求解码问题的主要内容,如果未能解决你的问题,请参考以下文章

如何调用 Delphi 程序来生成 HTML 页面内容

Delphi 2010 - 套接字端口 119 不起作用

IdHTTPServer(indy10)开发REST中间件

indy10的idhttpServer应答字符串

IdHttpServer实现webservice

用IdHTTPServer搞个简单的WEB服务器下载文件