Ir para conteúdo
  • Cadastre-se

dev botao

APIRest com pfx via delphi


  • Este tópico foi criado há 308 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Eu tenho que fazer uma conexão a ser feita com API 

No postman eu tenho sucesso configurando assim

Na aba Authorization  campo 
usarname: TESTE password:  TESTE

Fui em settings coloquei o certificado 
host: WWWW.teste
PFX File: /C:/demos/idHttp/.pfx
Passphrase: dkkdkdsoidodsi

Tenho 11 Heads
Content-Type: application/json; charset=utf-8
Content-Length: 28
Host: <calculated when request is sent>
User-Agent: PostmanRuntime/7.32.3
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
id: 12935088000899
Authorization: Basic Dusudiudsiduisdudidsui

Meu body e um raw (JSON)
{
    "data": {
        "Route": "POSLIVE"
    }
}

Quero o codigo em delphi pra isto IdSSLIoHanderSocket e IdHtpp

usei o TIdSSLIOHandlerSocketOpenSSL que tem opção de KeyFile 

O arquivo da API e um .pfx

Documentação : https://documenter.getpostman.com/view/5095160/2s93RZLpKD#d5b0c372-b42d-4eb1-ac60-651a61ec89e4


 

var
  IdHTTP: TIdHTTP;
  IdSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  RequestContent: TStringStream;
  Response: string;
begin
  IdHTTP := TIdHTTP.Create(nil);
  IdSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);

  try
    IdSSLIOHandler.SSLOptions.Method := sslvTLSv1_2;
    IdSSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
    IdSSLIOHandler.SSLOptions.Mode := sslmClient;
    IdSSLIOHandler.SSLOptions.VerifyMode := [];
    IdSSLIOHandler.SSLOptions.VerifyDepth := 0;
    IdSSLIOHandler.SSLOptions.CipherList := 'HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA:!DSS:!ADH:!IDEA';

    IdHTTP.IOHandler := IdSSLIOHandler;
    IdHTTP.Request.Host := 'uat-loyalty.dotznext.com';
    IdHTTP.Request.ContentType := 'application/json';

    IdHTTP.Request.CustomHeaders.AddValue('id', 'dsdsdsdds');
    IdHTTP.Request.CustomHeaders.AddValue('Authorization', 'Basic sddsds==');

    RequestContent := TStringStream.Create('{ "data": { "route" : "POSUSER", "input" : { "customerId": "ds", "employeeId": "sd", "pdvId": "2" } } }', TEncoding.UTF8);

    try
      Response := IdHTTP.Post('https://wwww', RequestContent);
      ShowMessage(Response); // Aqui você pode processar a resposta recebida
    finally
      RequestContent.Free;
    end;
  finally
    IdHTTP.Free;
    IdSSLIOHandler.Free;
  end;

Tentei esta forma da Erro conectiing with ssl wrong vers

ion number
Tentei usar oTIdSSLIOHandlerSocketOpenSSL

 

 

var
  IdHTTP: TIdHTTP;
  IdSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  Response: string;
  RequestBody: TStringStream;
  AuthorizationHeader: string;
begin
  IdHTTP := TIdHTTP.Create(nil);
  IdSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

  try
    // Configuração do IOHandler SSL
    IdSSLIOHandler.SSLOptions.Method := sslvTLSv1_2;
    IdSSLIOHandler.SSLOptions.Mode := sslmClient;
    IdSSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
    IdSSLIOHandler.SSLOptions.CertFile := 'C:\demos\idHttp\arquivo.pfx';
    IdSSLIOHandler.SSLOptions.KeyFile := IdSSLIOHandler.SSLOptions.CertFile;
    IdSSLIOHandler.SSLOptions.Method := sslvSSLv23;
    IdSSLIOHandler.SSLOptions.VerifyMode := [];
    IdSSLIOHandler.SSLOptions.VerifyDepth := 0;

    // Configuração do certificado
    IdSSLIOHandler.SSLOptions.SSLContext.SetDefaultPasswordCallback(SSLPasswordCallback);

    // Configuração do componente IdHTTP
    IdHTTP.IOHandler := IdSSLIOHandler;
    IdHTTP.Request.ContentType := 'application/json; charset=utf-8';
    IdHTTP.Request.CustomHeaders.Add('id: 221211');
    IdHTTP.Request.CustomHeaders.Add('Content-Length: 28');
        IdHTTP.Request.CustomHeaders.Add('User-Agent: PostmanRuntime/7.32.3');
    IdHTTP.Request.CustomHeaders.Add('Accept: */*');
    IdHTTP.Request.CustomHeaders.Add('Accept-Encoding: gzip, deflate, br');
    IdHTTP.Request.CustomHeaders.Add('Connection: keep-alive');

    // Configuração do cabeçalho de autorização
    AuthorizationHeader := 'sdsds';
    IdHTTP.Request.CustomHeaders.Add('Authorization: Basic ' +
      TIdEncoderMIME.EncodeString(AuthorizationHeader));

    // Corpo da solicitação
    RequestBody := TStringStream.Create('{"data": {"Route": "POSLIVE"}}', TEncoding.UTF8);
    try
      // Fazendo a solicitação POST
      Response := IdHTTP.Post('https://wwww', RequestBody);
      ShowMessage(Response); // Aqui você pode processar a resposta recebida
    finally
      RequestBody.Free;
    end;
  finally
    IdHTTP.Free;
    IdSSLIOHandler.Free;
  end;
end;

Neste caso reclama de PEM_read_bio: not start line

 

Ja instalei o pfx tamnem na maquina este e um certificado cedido dotz

 
Editado por johnbh3
erro
Link para o comentário
Compartilhar em outros sites

  • Moderadores
13 horas atrás, johnbh3 disse:

Eu tenho que fazer uma conexão a ser feita com API 

No postman eu tenho sucesso configurando assim

Na aba Authorization  campo 
usarname: TESTE password:  TESTE

Fui em settings coloquei o certificado 
host: WWWW.teste
PFX File: /C:/demos/idHttp/.pfx
Passphrase: dkkdkdsoidodsi

Tenho 11 Heads
Content-Type: application/json; charset=utf-8
Content-Length: 28
Host: <calculated when request is sent>
User-Agent: PostmanRuntime/7.32.3
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
id: 12935088000899
Authorization: Basic Dusudiudsiduisdudidsui

Meu body e um raw (JSON)
{
    "data": {
        "Route": "POSLIVE"
    }
}

Quero o codigo em delphi pra isto IdSSLIoHanderSocket e IdHtpp

usei o TIdSSLIOHandlerSocketOpenSSL que tem opção de KeyFile 

O arquivo da API e um .pfx

Documentação : https://documenter.getpostman.com/view/5095160/2s93RZLpKD#d5b0c372-b42d-4eb1-ac60-651a61ec89e4


 

var
  IdHTTP: TIdHTTP;
  IdSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  RequestContent: TStringStream;
  Response: string;
begin
  IdHTTP := TIdHTTP.Create(nil);
  IdSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);

  try
    IdSSLIOHandler.SSLOptions.Method := sslvTLSv1_2;
    IdSSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
    IdSSLIOHandler.SSLOptions.Mode := sslmClient;
    IdSSLIOHandler.SSLOptions.VerifyMode := [];
    IdSSLIOHandler.SSLOptions.VerifyDepth := 0;
    IdSSLIOHandler.SSLOptions.CipherList := 'HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA:!DSS:!ADH:!IDEA';

    IdHTTP.IOHandler := IdSSLIOHandler;
    IdHTTP.Request.Host := 'uat-loyalty.dotznext.com';
    IdHTTP.Request.ContentType := 'application/json';

    IdHTTP.Request.CustomHeaders.AddValue('id', 'dsdsdsdds');
    IdHTTP.Request.CustomHeaders.AddValue('Authorization', 'Basic sddsds==');

    RequestContent := TStringStream.Create('{ "data": { "route" : "POSUSER", "input" : { "customerId": "ds", "employeeId": "sd", "pdvId": "2" } } }', TEncoding.UTF8);

    try
      Response := IdHTTP.Post('https://wwww', RequestContent);
      ShowMessage(Response); // Aqui você pode processar a resposta recebida
    finally
      RequestContent.Free;
    end;
  finally
    IdHTTP.Free;
    IdSSLIOHandler.Free;
  end;

Tentei esta forma da Erro conectiing with ssl wrong vers

ion number
Tentei usar oTIdSSLIOHandlerSocketOpenSSL

 

 

var
  IdHTTP: TIdHTTP;
  IdSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  Response: string;
  RequestBody: TStringStream;
  AuthorizationHeader: string;
begin
  IdHTTP := TIdHTTP.Create(nil);
  IdSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

  try
    // Configuração do IOHandler SSL
    IdSSLIOHandler.SSLOptions.Method := sslvTLSv1_2;
    IdSSLIOHandler.SSLOptions.Mode := sslmClient;
    IdSSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
    IdSSLIOHandler.SSLOptions.CertFile := 'C:\demos\idHttp\arquivo.pfx';
    IdSSLIOHandler.SSLOptions.KeyFile := IdSSLIOHandler.SSLOptions.CertFile;
    IdSSLIOHandler.SSLOptions.Method := sslvSSLv23;
    IdSSLIOHandler.SSLOptions.VerifyMode := [];
    IdSSLIOHandler.SSLOptions.VerifyDepth := 0;

    // Configuração do certificado
    IdSSLIOHandler.SSLOptions.SSLContext.SetDefaultPasswordCallback(SSLPasswordCallback);

    // Configuração do componente IdHTTP
    IdHTTP.IOHandler := IdSSLIOHandler;
    IdHTTP.Request.ContentType := 'application/json; charset=utf-8';
    IdHTTP.Request.CustomHeaders.Add('id: 221211');
    IdHTTP.Request.CustomHeaders.Add('Content-Length: 28');
        IdHTTP.Request.CustomHeaders.Add('User-Agent: PostmanRuntime/7.32.3');
    IdHTTP.Request.CustomHeaders.Add('Accept: */*');
    IdHTTP.Request.CustomHeaders.Add('Accept-Encoding: gzip, deflate, br');
    IdHTTP.Request.CustomHeaders.Add('Connection: keep-alive');

    // Configuração do cabeçalho de autorização
    AuthorizationHeader := 'sdsds';
    IdHTTP.Request.CustomHeaders.Add('Authorization: Basic ' +
      TIdEncoderMIME.EncodeString(AuthorizationHeader));

    // Corpo da solicitação
    RequestBody := TStringStream.Create('{"data": {"Route": "POSLIVE"}}', TEncoding.UTF8);
    try
      // Fazendo a solicitação POST
      Response := IdHTTP.Post('https://wwww', RequestBody);
      ShowMessage(Response); // Aqui você pode processar a resposta recebida
    finally
      RequestBody.Free;
    end;
  finally
    IdHTTP.Free;
    IdSSLIOHandler.Free;
  end;
end;

Neste caso reclama de PEM_read_bio: not start line

 

Ja instalei o pfx tamnem na maquina este e um certificado cedido dotz

 

pega os fontes do ACBr que tem envios e consumos de informações com certificados

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 308 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.