Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #16  
Antiguo 03-01-2024
Badillo Badillo is offline
Miembro
 
Registrado: jun 2021
Posts: 43
Poder: 0
Badillo Va por buen camino
Comparto una vía de solución.

Saludos,

Compartiré la vía con la que solucioné el problema de la llamada a la API.

Código Delphi [-]
unit MdNPI;

interface

uses
  System.SysUtils, System.Variants, System.Classes, System.UITypes,
  System.AnsiStrings, System.IOUtils, uLkJSON;

type

  TNPI = class(TObject)
  private
    { Private declarations }
    FBaseURL: string;
    FParams: string;
    FResponse: string;
    FResponseJson: TlkJSONbase;

    function CallAPI(aUrl: string): string;
  public
    { Public declarations }
    property BaseURL: string read FBaseURL write FBaseURL;
    property ResponseJson: TlkJSONbase read FResponseJson;

    constructor Create;
    function ValidateNPIForAPI(aNumber, aNpiType, aTaxonomy :string): boolean;
  end;

implementation

uses
  System.Character, Vcl.AxCtrls, Winapi.ActiveX, WinHttp_TLB, IdURI;

{ TNPI }

constructor TNPI.Create;
begin
  FBaseURL :=  'https://npiregistry.cms.hhs.gov/api/?version=2.1';
  FParams := '';
  FResponse := '';
  FResponseJson := TlkJSONbase.Create;
end;

function TNPI.CallAPI(aUrl: string): string;
var
  Http: IWinHttpRequest;
  HttpStringStream: TStringStream;
  HttpStream: IStream;
  OleStream: TOleStream;
begin
  Http := CoWinHttpRequest.Create;
  Http.Open('GET', aUrl, False);
  Http.Send(EmptyParam);

  if Http.Status = 200 then
  begin
    HttpStream := IUnknown(Http.ResponseStream) as IStream;
    OleStream  := TOleStream.Create(HttpStream);
    try
      HttpStringStream := TStringStream.Create('');
      try
        OleStream.Position:= 0;
        HttpStringStream.CopyFrom(OleStream, OleStream.Size);

        Result := HttpStringStream.DataString;
      finally
        HttpStringStream.Free;
      end;
    finally
      OleStream.Free;
    end;
  end;
end;

function TNPI.ValidateNPIForAPI(aNumber, aNpiType,
  aTaxonomy: string): boolean;
var
  xCount: Integer;
  xUrl: string;
begin
  try
    xCount := 0;

    if aNumber <> '' then
      FParams := FParams + '&number='+aNumber;

    if aNpiType <> '' then
      FParams := FParams + '&enumeration_type='+aNpiType;

    if aTaxonomy <> '' then
      FParams := FParams + '&taxonomy_description='+aTaxonomy;

    xUrl := TIdURI.URLEncode(FBaseURL + FParams);
    FResponse := CallAPI(xUrl);
    TlkJSONbase(FResponseJson) := TlkJSON.ParseText(FResponse);

    xCount := StrToInt(FResponseJson.Field['result_count'].Value);
  except
    on e: Exception do
      begin
        xCount := 0;
      end;
  end;

  Result := (xCount > 0);

end;

end.

Gracias.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Incluir Headers de SOAP en web services Delphi 2010 Revow Delphi para la web 6 19-05-2015 23:32:59
invocar a una dll lestad Varios 3 07-03-2014 18:47:54
Como modificar los headers de un DBGrid yn4v4s OOP 3 16-07-2012 20:43:07
dbgrid con sub-headers samantha jones Varios 1 02-03-2005 21:30:25
Indicador de orden en los headers de un TListView walrus OOP 1 11-10-2004 19:50:30


La franja horaria es GMT +2. Ahora son las 04:35:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi