学习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;
结果: