TRestClient

TRestClient

Delphi XE6开始,REST Client系列元件渐渐开始成为 Delphi 团队的重点开发项目之一。TRESTClient, TRESTRequest, TRESTResponse 系列组合。

var
  jo: TJSONObject;
begin
  jo:= TJSONObject.Create;
  try
    ResetRESTComponentsToDefaults;
 
    RESTClient.BaseURL := 'http://ynmiddle:9999/';
    RESTClient.Authenticator := HTTPBasicAuthenticator1;
    RESTClient.ContentType := 'application/x-www-form-urlencoded';
 
    RESTRequest.Method := TRESTRequestMethod.rmPOST;
    RESTRequest.Resource := 'oauth/token';
 
    HTTPBasicAuthenticator1.Username := 'orbid-hml';
    HTTPBasicAuthenticator1.Password := EmptyStr;
 
    jo.AddPair('scope', 'product:show stock:save stock:update warehouse:list warehouse:save warehouse:show '+
                                 'warehouse:update partnerOrder:show partnerOrder:list partnerOrder:update');
    jo.AddPair('grant_type', 'client_credentials');
 
    RESTRequest.Params.Clear;
    RESTRequest.Params.AddHeader('authorization', 'Basic '+Edt_Base64.Text);
    RESTRequest.AddBody(jo);
 
 
    RESTRequest.Execute;
    memLog.Text:=RESTResponse1.Content;
  finally
    FreeAndNil(jo);
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TForm1.Button4Click(Sender: TObject);
var
  url,Timestamp,Signature,seckey: string;
  param:Tstringlist;
begin
  url:='https://mws.amazonservices.com/Orders/2013-09-01';
 
 
  self.NetHTTPRequest1.Accept := 'text/html, application/xhtml+xml, */*';
  self.NetHTTPRequest1.url := url;
  self.NetHTTPRequest1.MethodString := 'POST';
  seckey:='seckey';
  param:=Tstringlist.Create;
  param.Add('AWSAccessKeyId=AWSAccessKeyId');
  param.Add('Action=GetOrder');
  param.Add('SellerId=SellerId');
  param.Add('MWSAuthToken=MWSAuthToken');
  param.Add('SignatureVersion=2');
  param.Add('Timestamp='+DateToISO8601(now,true));
  param.Add('Version=2013-09-01');
  param.Add('SignatureMethod=HmacSHA256');
  param.Add('AmazonOrderId.Id.1=AmazonOrderId.Id.1');
  Signature:=system.hash.THashSHA2.GetHMAC('mws.amazonservices.com/Orders/2013-09-01'+param.Text,seckey)  ;
  Signature:=Data.Cloud.CloudAPI.Encode64(Signature);
  param.Add('Signature='+Signature);
  edit1.Text:=signature;
  edit2.Text:=system.hash.THashSHA2.GetHMAC(trim(memo1.Text),seckey)  ;
  //memo1.Text:='mws.amazonservices.com/Orders/2013-09-01'+param.Text;
 
  //Signature:=Data.Cloud.CloudAPI.TCloudSHA256Authentication.GetHashSHA256Hex('mws.amazonservices.com/Orders/2013-09-01'+param.Text);
 
 
  self.Memo2.Text := self.NetHTTPRequest1.Post(url, param).ContentAsString(tencoding.UTF8);
 
end;

  

  

posted @   delphi中间件  阅读(1389)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2019-08-06 LITEIDE配置
2019-08-06 下载GO的开源开发工具LITEIDE
2013-08-06 指针的本质
2013-08-06 SQL SERVER 导入EXCEL的存储过程
点击右上角即可分享
微信分享提示