Estoy tratando de hacer una llamada a este API, para obtener del un JSON y así validar la información. Ajusté la función según lo que entendí del ejempo que debaten acá, pero cuando hace por conectarse emite el siguiente error:
raised exception class EIdOSSLUnderlyingCryptoError with message 'Error connecting with SSL.
error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
El código fuente de la función es:
Código Delphi
[-]
function TValidateNPIForAPI.IsValidateNPIForAPI(aNumber, aNpiType, aTaxonomy :string): boolean;
var
xResponse: TStringStream;
xUrl, xParams: String;
xJsonObj: TlkJSONbase;
xCount: Integer;
SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
Result := False;
xUrl := 'https://npiregistry.cms.hhs.gov/api/?version=2.1';
xResponse := TStringStream.Create('');
xJsonObj := TlkJSONbase.Create;
if aNumber <> '' then
xParams := xParams + '&number='+HttpEncode(aNumber);
if aNpiType <> '' then
xParams := xParams + '&enumeration_type='+HttpEncode(aNpiType);
if aTaxonomy <> '' then
xParams := xParams + '&taxonomy_description='+HttpEncode(aTaxonomy);
try
SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
Fhttp := TIDHttp.Create(nil);
Fhttp.IOHandler := SSLHandler;
Fhttp.Request.Clear();
Fhttp.Request.Accept := '*/*';
Fhttp.Request.CustomHeaders.Values['X-MANTISAPI-CODE'] := 'eeXahKo8';
Fhttp.Get(xUrl + xParams, xResponse);
TlkJSONbase(xJsonObj) := TlkJSON.ParseText(xResponse.DataString);
xCount := StrToInt(xJsonObj.Field['result_count'].Value);
Result := (xCount > 0);
finally
xResponse.Free;
xJsonObj.Free;
Result := False;
end;
end;
Como ejemplo en los parámetros pueden utilizar aNumber = '1871147520' y aNpiType = 'NPI-1'.
Gracias por su ayuda.