Ene*_*ğlu 3 arrays delphi rest delphi-10.1-berlin
我正在使用 Delphi 10.1 Berlin
我想使用 将图像数据发送TBytes
到 Rest 服务TRestRequest
,但我找不到将 a 传递TBytes
给该TRestRequest.AddBody()
方法或任何其他方法的方法。
POST http://myserver:1111//Openxxx/RecxxxLxxxPxxxx HTTP/1.1 内容类型:文本/json 主机:myserver:1111 内容长度:28892 期望:100-继续 连接:保持活动 [255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,219,0,132,0,9, ... ... ... 130,130,252,168,127,164,63,164,41,109,204,245,62,106,51,135,12,146,63,255,217]
TRESTRequest.AddBody()
有一个接受 aTStream
作为输入的重载。您可以使用类将您的包装TBytes
成一个。TStream
TBytesStream
procedure TForm1.Button1Click(Sender: TObject);
var
ABytes: TBytes;
AStream: TBytesStream;
begin
ABytes := ...;
try
AStream := TBytesStream.Create(ABytes);
RESTRequest1.AddBody(AStream, ctIMAGE_JPEG);
RESTRequest1.Execute;
finally
AStream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
或者,TRESTRequestParameterList.AddItem
改用它,它具有以下重载TBytes
:
procedure TForm1.Button1Click(Sender: TObject);
var
ABytes: TBytes;
begin
ABytes := ...
RESTRequest1.Params.AddItem('body', ABytes, pkGETorPOST, [poDoNotEncode], ctIMAGE_JPEG);
RESTRequest1.Execute;
end;
Run Code Online (Sandbox Code Playgroud)
话虽如此,我发现TRESTClient
它过于复杂和错误/限制。更多时候,Indy'sTIdHTTP
更容易使用,例如:
procedure TForm1.Button1Click(Sender: TObject);
var
ABytes: TBytes;
AStream: TBytesStream;
begin
ABytes := ...;
try
AStream := TBytesStream.Create(ABytes);
IdHTTP1.Request.ContentType := 'image/jpeg';
IdHTTP1.Post('http://myserver:1111//Openxxx/RecxxxLxxxPxxxx', AStream);
finally
AStream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTP1.Request.ContentType := 'image/jpeg';
IdHTTP1.Post('http://myserver:1111//Openxxx/RecxxxLxxxPxxxx', 'image.jpg');
end;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5252 次 |
最近记录: |