我似乎没有管理使用dropBox api操作的文件复制。我可以成功授权我的客户端,下载和上传文件。复制操作需要使用POST方法,我认为这是我产生错误请求的地方。
我定义了OAuth认证的POST方法,并使用Indy TIdHTTP发布请求,但是我总是收到错误代码403 – 权限被拒绝。
我定义了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;
解决方法
据我所知,当与indy一起使用时,params被复制在消息的正文中,而不是在url中
尝试使用类似的东西:
尝试使用类似的东西:
http:Post(URL+encodeparams(params));
我不知道这是正确的语法,但这是想法。