Hi
In this example i changed formdata by x-www-form-urlencoded, and HttpClient.Send() by HttpClient.Post()
See the code, this example get token for a Library Document al SharePoint Site works for me, maybe it will help you
procedure CallGetResponseToken(): Text
var
HttpClient: HttpClient;
HttpContent: HttpContent;
HttpResponseMessage: HttpResponseMessage;
HttpHeaders: HttpHeaders;
Url: Text;
formdata: Text;
ResponseText: Text;
StatusCodeErr: Label 'Status code: %1\ Description: %2 \%3', comment = 'ESP="Status code: %1\ Description: %2 \%3"';
begin
Url := Url_Oauth2Token();
formdata := FormData_Oauth2Token(SPLDSite::PurchDocuments);
HttpContent.WriteFrom(formdata);
HttpContent.GetHeaders(HttpHeaders);
HttpHeaders.Clear();
HttpHeaders.Add('Content-Type', 'application/x-www-form-urlencoded');
HttpClient.Post(Url, HttpContent, HttpResponseMessage);
If not HttpResponseMessage.IsSuccessStatusCode() then begin
HttpResponseMessage.Content.ReadAs(formdata);
Error(StatusCodeErr, HttpResponseMessage.HttpStatusCode(), HttpResponseMessage.ReasonPhrase(), formdata);
end;
HttpResponseMessage.Content().ReadAs(ResponseText);
exit(ResponseText);
end;
local procedure Url_Oauth2Token() UrlOauth2Token: Text
var
SPLDSetup: Record SPLDSetup;
TenantID: Text;
begin
SPLDSetup.Get(SPLDSite::None);
SPLDSetup.TestField(TenantID);
SPLDSetup.TestField(UrlOAuth2Token);
TenantID := SPLDSetup.TenantID;
UrlOauth2Token := StrSubstNo(SPLDSetup.UrlOAuth2Token, TenantID);
end;
local procedure FormData_Oauth2Token(_SPLDSite: Enum SPLDSite) FormDataOauth2Token: Text
var
SPLDSetup: Record SPLDSetup;
ClientID: Text;
ClientSecret: Text;
scope: Text;
grant_type: Text;
tb: TextBuilder;
begin
SPLDSetup.Get(_SPLDSite);
SPLDSetup.TestField(ClientID);
SPLDSetup.TestField(ClientSecret);
SPLDSetup.TestField(UrlOAuth2Scope);
scope := SPLDSetup.UrlOAuth2Scope;
grant_type := 'client_credentials';
ClientID := SPLDSetup.ClientID;
ClientSecret := SPLDSetup.ClientSecret;
tb.AppendLine('grant_type=' + grant_type);
tb.AppendLine('&' + 'client_id=' + ClientID);
tb.AppendLine('&' + 'client_secret=' + ClientSecret);
tb.Append('&' + 'scope=' + scope);
FormDataOauth2Token := tb.ToText();
end;