1
I am developing an application in Delphi xe8 that will consume web service data that returns data in json. The problem is that it is presenting the message
HTTP/1.1 401 Unauthorized
{"code":401,"message":"Unauthorized","detailedMessage":"Unauthorized"}.
How do I submit this basic type authorization.
Current function:
procedure TForm1.executaConexao;
var
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
RequestBody: TStream;
ResponseBody, headAutorization, credencial: string;
begin
try
// IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv2;
try
// IdHTTP1.Request.Accept := 'application/json';
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.CharSet := 'charset=utf-8';
IdHTTP1.Request.Connection := 'keep-alive';
IdHTTP1.Request.UserAgent :=
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36';
IdHTTP1.Request.AcceptEncoding := 'gzip, deflate';
IdHTTP1.Request.AcceptLanguage := 'pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4';
IdHTTP1.Request.CacheControl := 'no-cache';
IdHTTP1.Request.BasicAuthentication := true;
IdHTTP1.Request.Username := 'usuarioXXXX';
IdHTTP1.Request.Password := 'testesenha';
credencial := getCredencial(IdHTTP1.Request.Username,
IdHTTP1.Request.Password);
// IdHTTP1.Request.CustomHeaders.Delimiter := ',';
IdHTTP1.Request.CustomHeaders.FoldLines := true;
IdHTTP1.Request.CustomHeaders.Values['Authorization '] := 'Basic ' +
credencial;
IdHTTP1.Request.CustomHeaders.Values['codColigada'] := IntToStr(4);
IdHTTP1.Request.CustomHeaders.Values['codSistema'] := 'S';
IdHTTP1.Request.CustomHeaders.Values['codUsuario'] := 'integraTotvs';
IdHTTP1.Response.ContentType := 'application/json';
IdHTTP1.Response.CharSet := 'UTF-8';
IdHTTP1.AllowCookies := true;
IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdHTTP1.HandleRedirects := true;
IdHTTP1.HTTPOptions := [hoInProcessAuth] + [hoKeepOrigProtocol] +
[hoForceEncodeParams];
IdHTTP1.ProtocolVersion := pv1_0;
ResponseBody :=
IdHTTP1.Get
('10.109.1.43:8051/rmsrestdataserver/rest/EduPSRhuPessoaData/…');
// Memo1.Lines.Add(ResponseBody);
Memo1.Lines.Add(IdHTTP1.ResponseText);
except
on E: EIdHTTPProtocolException do
begin
Memo1.Lines.Add(E.Message);
Memo1.Lines.Add(E.ErrorMessage);
end;
on E: exception do
begin
Memo1.Lines.Add(E.Message);
end;
end;
finally
// HTTP.Free;
end;
end;