USEGEAR

导航

学习unigui【28】UniGUI接收POST/GET

小儿科问题,直接上流程代码:

 

 1 procedure TUniServerModule.UniGUIServerModuleHTTPCommand(
 2   ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo;
 3   var Handled: Boolean);
 4   var
 5       JSONData: TBytes;
 6   JSONString: string;
 7 begin
 8 //  Result := False;
 9 
10   // 判断路径是否是 /queryData
11   if ARequestInfo.URI = '/queryData' then
12   begin
13     // 处理GET请求
14     if ARequestInfo.Command = 'GET' then
15     begin
16       AResponseInfo.ContentText := '成功接收GET请求,参数为:' + ARequestInfo.Params.Text;
17       AResponseInfo.ResponseNo := 200; // HTTP 200 OK
18       Handled := True;
19 //      Result := True;
20     end
21     // 处理POST请求
22     else if ARequestInfo.Command = 'POST' then
23     begin
24 
25     // 确保 PostStream 有数据
26       if Assigned(ARequestInfo.PostStream) then
27       begin
28         // 将PostStream转换为字节数组
29         SetLength(JSONData, ARequestInfo.PostStream.Size);
30         ARequestInfo.PostStream.Position := 0; // 重置流位置
31         ARequestInfo.PostStream.ReadBuffer(JSONData[0], ARequestInfo.PostStream.Size);
32 
33         // 使用 UTF-8 将字节数组转换为字符串
34         JSONString := TEncoding.UTF8.GetString(JSONData);
35 
36         AResponseInfo.ContentText := '成功接收POST请求,JSON参数为:' + JSONString;
37         AResponseInfo.ResponseNo := 200; // HTTP 200 OK
38       end
39       else
40       begin
41         AResponseInfo.ContentText := 'POST请求没有包含任何数据';
42         AResponseInfo.ResponseNo := 400; // HTTP 400 Bad Request
43       end;
44 
45 
46 
47       Handled := True;
48     end
49     else
50     begin
51       AResponseInfo.ContentText := '不支持的请求方法';
52       AResponseInfo.ResponseNo := 405; // HTTP 405 Method Not Allowed
53       Handled := True;
54 //      Result := True;
55     end;
56   end
57   else
58   begin
59 //    AResponseInfo.ContentText := '404 - 未找到路径';
60 //    AResponseInfo.ResponseNo := 404; // HTTP 404 Not Found
61   end;
62 end;
View Code

结果:

 

posted on 2024-10-16 07:03  USEGEAR  阅读(43)  评论(0编辑  收藏  举报