【发布时间】:2023-04-09 08:33:01
【问题描述】:
我正在使用 Indy 使用 HTTP 构建客户端和服务器应用程序。在客户端上,我使用TIdHTTP,在服务器上我使用TIdHTTPWebBrokerBridge 和一个Web 模块。我需要客户端能够通过流将任何类型的数据发布到服务器。这是通过我称为/set?Key=API_KEY&Name=FILE_NAME 的通用命令完成的,其中Key 是用于身份验证的API 密钥,Name 是要发布的文件的名称。
在客户端,我发布的数据是这样的:
function TInnoCloudClient.SetData(const Name: String; AStream: TStream): Bool;
var
U: String;
begin
U:= FServerURL; //Base URL of Server
if Copy(U, Length(U)-1, 1) <> '/' then
U:= U + '/';
U:= U + 'get?Key='+Encode(FAPIKey);
U:= U + '&Name='+Encode(Name);
try
FWeb.Post(U, AStream);
except
on e: exception do begin
//Handle Exception
end;
end;
end;
这个函数应该把AStream里面的数据保存到服务器上一个文件名为Name的文件中。然而,在服务器端,在请求处理程序中,我在请求中没有看到相应的 TStream 属性,我可以从中读取它。
在服务器中,我如何获取作为TStream后代发送的数据?我不需要知道如何保存或处理请求,我只需要知道如何从请求(TWebRequest)中获取此 Stream?
【问题讨论】:
标签: delphi delphi-xe2 indy indy10 httpserver