如何使用Delphi中的DropBox REST API复制文件

Nos*_*mus 22 delphi oauth indy dropbox-api

我似乎没有管理使用dropbox api操作的文件副本.我可以成功授权我的客户端,下载和上传文件.复制操作需要使用POST方法,我认为这是我产生错误请求的地方.我正在定义OAuth身份验证的POST方法,并使用Indy TIdHTTP发布请求,但我总是收到错误代码403 - 权限被拒绝.

这是dropbox api描述:https://www.dropbox.com/developers/reference/api#fileops-copy

这是我的代码的一部分:

 ParamStr := Format('root=%s&from_path=%s&to_path=%s', [Root, EncodeFileName(FromPath), EncodeFileName(ToPath)]);
 URL := 'https://api.dropbox.com/1/fileops/copy' + '?' + ParamStr;

 Consumer := TOAuthConsumer.Create(Key, Secret);
 AToken := TOAuthToken.Create(fToken, fTokenSecret);
 HMAC := TOAuthSignatureMethod_HMAC_SHA1.Create;
 ARequest := TOAuthRequest.Create('');
 try
  ARequest.HTTPURL := URL;
  ARequest.Method := 'POST';
  ARequest := ARequest.FromConsumerAndToken(Consumer, AToken, '');
  ARequest.Sign_Request(HMAC, Consumer, AToken);


  Params := TStringList.Create;
  try
   Params.Text := ParamStr + '&' + ARequest.GetString;
   HTTP.Post(URL, Params);
  finally
   Params.Free;
  end;
Run Code Online (Sandbox Code Playgroud)

Pac*_*rin 1

据我所知,与 indy 一起使用时,参数会复制到消息正文中,而不是复制到 url 中,请尝试使用以下内容:

http:Post(URL+encodeparams(params));
Run Code Online (Sandbox Code Playgroud)

我不确定这是正确的语法,但这就是想法。