Bom dia, estou efetuado a integração de um sistema Delphi Seattle com a api Cloud do Whatsapp Business., no momento estou tentando fazer o upload de um arquivo .pdf para recuperação do id para ser anexado posteriormente nas mensagem. Entretanto, ao executar o post da requisição eu recebo os seguinte erro:
Ao usar os componentes TRESTClient: ao executar recebo o erro de Access Violation, segue código
vClient := TRESTClient.Create(nil);
vRequest := TRESTRequest.Create(nil);
vResponse := TRESTResponse.Create(nil);
vArquivo := TFileStream.Create(vNomeArquivo, fmOpenRead);
vArquivo.Position := 0;
vClient.ResetToDefaults;
vRequest.ResetToDefaults;
vResponse.ResetToDefaults;
vClient.BaseURL := 'https://graph.facebook.com/v15.0/'+vIDNumero+'/media';
vClient.HandleRedirects := True;
vClient.RaiseExceptionOn500 := false;
vRequest.Client := vClient;
vRequest.Method := TRESTRequestMethod.rmPOST;
vRequest.Resource := '';
vRequest.Response := vResponse;
vRequest.SynchronizedEvents := False;
vRequest.Params.Clear;
vRequest.Params.AddHeader('Authorization', 'Bearer '+vToken);
vRequest.Params.ParameterByName('Authorization').Options := [poDoNotEncode];
vRequest.Params.AddItem('file',vArquivo, pkGETorPOST, [poDoNotEncode], ctAPPLICATION_PDF);
vRequest.Params.AddItem('messaging_product','whatsapp', pkGETorPOST, [poDoNotEncode], ctNone);
vRequest.Execute;
Ao utilizar os componentes do TIDHTTP: recebo o erro 403: Forbidden, segue código:
vNomeArquivo := ExtractFilePath(Application.ExeName) + 'PDF\' + IntToStr(pCodigo) + '.pdf';
vIDSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
vIDHTTP := TIdHTTP.Create(nil);
vIdHTTP.IOHandler := vIDSSL;
vURL := 'https://graph.facebook.com/v15.0/'+vIDNumero+'/media';
vIDHTTP.Request.Clear;
vIDHTTP.Request.CustomHeaders.Clear;
vIDHTTP.Request.BasicAuthentication := False;
vIDHTTP.Request.CustomHeaders.AddValue('Authorization', 'Bearer '+vToken);
vParams := TIdMultipartFormDataStream.Create();
vParams.AddFile('file', vNomeArquivo, 'application/pdf');
vParams.AddFormField('messaging_product', 'whatsapp');
IDResponse := vIDHTTP.Post(vURL, vParams);
Alguém poderia auxiliar para identificar o que estou fazendo de errado?
Desde já agradeço.