Erro de versão no POST do API no Delphi 2010
24/02/2024
0
Bom dia prezados
Estou com dificuldade em enviar um POST por API no Delphi 2010.
Está vindo a seguinte mensagem de erro :
Erro ao enviar a requisição: Error connecting with SSL.
Error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
Coloquei a versão mais atual do OpenSLL deste link https://slproweb.com/products/Win32OpenSSL.html
e não adiantou.
O Fonte é este :
procedure TMenu1.Envia_por_API;
var
IdHTTP: TIdHTTP;
JsonData: TJSONObject;
Token: string;
Response: string;
Url: string;
JsonDataString : TStringList;
Stream: TFileStream;
IDAntiFreeze: TIDAntiFreeze;
IOHandler: TIdSSLIOHandlerSocketOpenSSL;
aConnectTimeout : integer;
begin
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IDAntiFreeze:= TIDAntiFreeze.Create(NIL);
IdHTTP1.IOHandler:=IOHandler;
JsonData := TJSONObject.Create;
try
// Popula o objeto JSON com os dados
JsonData.AddPair('setor', TJSONString.Create('2'));
JsonData.AddPair('processo', TJSONString.Create('1'));
JsonData.AddPair('codigoamostra', TJSONString.Create('1'));
JsonData.AddPair('revisao', TJSONString.Create('1'));
JsonData.AddPair('parametros', TJSONString.Create('1'));
// URL da sua API
Url := 'https://acedd.ssas.com.br/api/envia-dados';
// Token de autenticação
Token := 'abddeXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmVyYWNydXouZGlnZXMuY29tLmJyIiwidXNlcm5hbWUiOjEwMzMsImVtYWlsIjoidGhlbnJpcXVlQGxhYmZlcnQuYWdyLmJyIiwiZXhwIjoiMjAyNC0wMy0wNiJ9.dK/e0tnxJ1TD2SI7LxSo6Z+5Qf1w2FkZvzPN5Mp1anU=';
// Configuração da requisição
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + Token);
// Converte o objeto JSON para string
JsonDataString := TStringList.Create; // MAURICIO 25/01/24
JsonDataString.add(JsonData.ToString);
// Faz a requisição POST
Response := IdHTTP1.Post(Url, JsonDataString);
// Processa a resposta da API
ShowMessage('Resposta da API: ' + Response);
except
on E: Exception do
ShowMessage('Erro ao enviar a requisição: ' + E.Message);
end;
// Libera recursos
IdHTTP.Free;
IOHandler.Free;
JsonData.Free;
end;
O que acho que deveria funcionar é o seguinte fonte : (mas não deu certo mesmo como o OpenSSL mais recente)
with IOHandler.SSLOptions do begin
Method := sslvTLSv1_2;
Mode := sslmClient;
SSLVersions := [sslvTLSv1_2];
end;
Mas ele não passou na compilação deu erro no sslvTLSv1_2 no SSLVersions
Desde já agradeço a atenção de todos
Estou com dificuldade em enviar um POST por API no Delphi 2010.
Está vindo a seguinte mensagem de erro :
Erro ao enviar a requisição: Error connecting with SSL.
Error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
Coloquei a versão mais atual do OpenSLL deste link https://slproweb.com/products/Win32OpenSSL.html
e não adiantou.
O Fonte é este :
procedure TMenu1.Envia_por_API;
var
IdHTTP: TIdHTTP;
JsonData: TJSONObject;
Token: string;
Response: string;
Url: string;
JsonDataString : TStringList;
Stream: TFileStream;
IDAntiFreeze: TIDAntiFreeze;
IOHandler: TIdSSLIOHandlerSocketOpenSSL;
aConnectTimeout : integer;
begin
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IDAntiFreeze:= TIDAntiFreeze.Create(NIL);
IdHTTP1.IOHandler:=IOHandler;
JsonData := TJSONObject.Create;
try
// Popula o objeto JSON com os dados
JsonData.AddPair('setor', TJSONString.Create('2'));
JsonData.AddPair('processo', TJSONString.Create('1'));
JsonData.AddPair('codigoamostra', TJSONString.Create('1'));
JsonData.AddPair('revisao', TJSONString.Create('1'));
JsonData.AddPair('parametros', TJSONString.Create('1'));
// URL da sua API
Url := 'https://acedd.ssas.com.br/api/envia-dados';
// Token de autenticação
Token := 'abddeXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdmVyYWNydXouZGlnZXMuY29tLmJyIiwidXNlcm5hbWUiOjEwMzMsImVtYWlsIjoidGhlbnJpcXVlQGxhYmZlcnQuYWdyLmJyIiwiZXhwIjoiMjAyNC0wMy0wNiJ9.dK/e0tnxJ1TD2SI7LxSo6Z+5Qf1w2FkZvzPN5Mp1anU=';
// Configuração da requisição
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + Token);
// Converte o objeto JSON para string
JsonDataString := TStringList.Create; // MAURICIO 25/01/24
JsonDataString.add(JsonData.ToString);
// Faz a requisição POST
Response := IdHTTP1.Post(Url, JsonDataString);
// Processa a resposta da API
ShowMessage('Resposta da API: ' + Response);
except
on E: Exception do
ShowMessage('Erro ao enviar a requisição: ' + E.Message);
end;
// Libera recursos
IdHTTP.Free;
IOHandler.Free;
JsonData.Free;
end;
O que acho que deveria funcionar é o seguinte fonte : (mas não deu certo mesmo como o OpenSSL mais recente)
with IOHandler.SSLOptions do begin
Method := sslvTLSv1_2;
Mode := sslmClient;
SSLVersions := [sslvTLSv1_2];
end;
Mas ele não passou na compilação deu erro no sslvTLSv1_2 no SSLVersions
Desde já agradeço a atenção de todos
Maurício
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)