Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2020
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
REST Debugger Parametro HEADERS no Admitido

Hola Chicos es un gran privilegio contar con la ayuda de muchos de ustedes:

Mi Caso tiene que ver mas que todo con la utilidad REST Debugger poseo DelphiXE7 en la que me llama la atención la herramienta sin embargo probando con un proveedor de un sistema web me dio acceso a su API en la que me dio un token la cual configuro con la herramienta mencionada el HEADERS con su respectivo nombre y Valor:
Ejemplo:
Nombre: X-IFX-Token
Value:f22db1478793f17cd4d5c2d957b608df

sin embargo observo que los parámetros de encabezado del componente RESTRequest no funciona apropiadamente ya que no me permite hacer la conexión. sin embargo probé utilizando la herramienta postman poniendo los parámetros antes mencionado y no poseo ningún problema.

Si alguien desea colaborarme escríbanme para aportar la dirección del url:

Saludos calurosos;

novato_erick
Responder Con Cita
  #2  
Antiguo 16-06-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Exactamente cómo añades los parámetros a la cabecera en RESTDebugger?
Hay varias formas de hacerlo...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-06-2020
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
¿Exactamente cómo añades los parámetros a la cabecera en RESTDebugger?
Hay varias formas de hacerlo...
Agradecido por recibir respuesta Neftali y es un privilegio que prestes atención a mi duda:

1-Por la misma aplicación REST Debugger de Embarcadero
Pestaña de Resquest:

GET (http://app.dominio.com/api)
Cita:
Si aplico https me manda error REST request failed: Error connecting with SSL. error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure pero este es tema de otro hilo de foro
Content-Type: application/json


Pestaña de parámetro
Add
Kind
HEADER
Name: X-IFX-Token
Value: f22db1478793f17cd4d5dfdasdcfasdfxxxxxx

y Así los otros parametros como:
Add
Kind
[GET/POS]
Name: action
Value: customers
Add
Kind
[GET/POS]
Name: action
Value: customers

2-Copiando los componente desde REST Debugger de Embarcadero y pegandolo en el modulo
y modificando igual las propiedades. //Pero en principio es lo mismo que en la primera opción presentada

3-ahora mismo intentando :

Código Delphi [-]
procedure TuConfigura.Button1Click(Sender: TObject);
var
UrlConectar: String;
RESTClient1: TRESTClient;
RESTResponse1 : TRESTResponse;
begin
UrlConectar := eURL.Text; {'http://app.dominio.com/api'; al usar https me manda el error también antes escrito error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure}
  try
    RESTClient1 := TRESTClient1.Create(nil);
       try
           RESTResponse1.Create(nil);
                 try
                     RESTClient1.BaseURL := UrlConectar;
                     RESTClient1.SetHTTPHeader('X-IFX-Token:', 'f22db1478793f17cd4d5dfdasdcfasdfxxxxxxf');
                 finally
                     RESTClient1.Free;
                 end;
              if Assigned(RESTResponse1.JSONValue) then
              begin
                 TextoRespuesta := TJson.Format(RESTResponse1.JSONValue);
              end
              else
              begin
                 TextoRespuesta := RESTResponse1.Content;
              end;
       finally
            RESTResponse1.Free;
       end;
  except
    on E: Exception do
      ShowMessage(E.ClassName + ': ' + E.Message);
  end;
end;

Agradeciendo su colaboracion;

Saludos;
Responder Con Cita
  #4  
Antiguo 17-06-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Es la misma duda y resolución vista aquí?
Lo digo para actualizar la respuesta para otros usuarios.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 17-06-2020
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
¿Es la misma duda y resolución vista aquí?
Lo digo para actualizar la respuesta para otros usuarios.
Mi consulta en tu sitio es en referencia a RESTDebugger era que al poner "https://" en el Get que trae Delphi XE7 por defecto tiene aparentemente el problema de versión en OpenSSL la cual ya fue corregido con la nueva versión. En mi post anterior comenté: que ese contratiempo es tema de otro hilo.

En este hilo tiene que ver con agregar un HEADERS Desde RESTDebugger el parámetro
Add
Kind
HEADER
Name: X-IFX-Token
Value: f22db1478793f17cd4d5dfdasdcfasdfxxxxxx

ni aunque copie al portapapeles los componentes RESTClient, RESTResponse, RESTRequest que es el que contiene las propiedades para realizar cambiar el HEADER, GET-POST, Etc para ser modificado sus propiedades y tratar de realizar la conexión .

Agradecido por que le des seguimiento a mi interrogante Neftali.


novato_erick
Responder Con Cita
  #6  
Antiguo 18-06-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hay varias formas de añadir HEADERS en RESTDebugger, deppendiendo de lo que te definan en las especificaciones.
Lo normal es hacerlo con:


Parameters/Add/Kind=HEADER y ahí verás que en NAME hay una lista de tipos predefinidos.





Si lo que tienes que enviar son temas de autentificación, se define mediante la pestaña Authentification.
Ahí también están predefinidos los tipos más habituales:
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 26-06-2020
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Logré por fin agregar los parámetros de encabezado de esta manera:

Código Delphi [-]
procedure TuConfigura.btnGet1Click(Sender: TObject);
var
  jValue: TJSONValue;
  miparametro: string;
  RESTRequest1: TRESTRequest;
  RESTClient1: TRESTClient;
  RESTResponse1 : TRESTResponse;
begin
  try
    RESTClient1 := TRESTClient.Create(nil);
    RESTRequest1 := TRESTRequest.Create(nil);
    RESTResponse1 := TRESTResponse.Create(nil);
    try
      RESTClient1.Accept := 'application/json, text/plain; text/json';
      RESTClient1.AcceptCharset := 'UTF-8, *;q=0.8';
      RESTClient1.BaseURL := eUrlApi.Text;
      RESTClient1.HandleRedirects := True;
      RESTClient1.AcceptEncoding := 'identity';
      RESTClient1.ContentType := 'application/json';
      RESTClient1.UserAgent := 'Embarcadero RESTClient/1.0';
//      RESTClient1.SynchronizedEvents := True;
      RESTClient1.FallbackCharsetEncoding := 'UTF-8';
      RESTClient1.AllowCookies := True;


      RESTRequest1.Client := RESTClient1;
//El parametro X-IFX-Token no es un estándar definido dentro de los campos de encabezados html https://en.wikipedia.org/wiki/List_o..._header_fields
      RESTRequest1.Params.AddItem('X-IFX-Token', eToken.Text,
        TRESTRequestParameterKind.pkHTTPHEADER, [poAutoCreated]);


{En este caso aquí se presentó también el dolor de cabeza ya que usando el procedimiento
 RESTReques1.AddParameter(nName, nValue, nKind) 
la respeusta era: http://app.midominio.com/api?action=customers&page=1  Bad Request 400 -0 bytes data returnetd. blablabla}

//la solución fué agregando un Cuerpo "Body" de esta manera ya obtuve la respuesta: {"class":"GET","action":"customers","customers":[],"count":"0"}
      RESTRequest1.AddParameter('Content-Type', 'application/json',
        TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);
      RESTRequest1.AddParameter('Accept', 'application/json',
        TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]); 

      miparametro := '{ "class": "GET", "action": ' + '"' + eParam1.Text + '",'
        + ' "page": "' + eParam2.Text + '" }';

      RESTRequest1.AddBody(miparametro, TRESTContentType.ctAPPLICATION_JSON);
      RESTRequest1.Method := TRESTRequestMethod.rmPOST;
      RESTRequest1.Timeout := 30000;
      RESTResponse1.ContentType := 'application/json';
      RESTRequest1.Response := RESTResponse1;
      RESTRequest1.Execute;

      jValue := RESTResponse1.JSONValue;
      if (ComboBox1.ItemIndex = 1) and (jValue is TJSONObject) then
        mRespuesta2.Text := jValue.ToString
      else
        mRespuesta2.Text := RESTResponse1.Content;

    finally
      RESTClient1.Free;
      RESTRequest1.Free;
      RESTResponse1.Free;
    end;
  except
    on E: Exception do
      ShowMessage(E.ClassName + ': ' + E.Message);
  end;
end;

Doy por solucionado este dilema por mi falta de experiencia en trabajar con aplicaciones web y Delphi honestamente me emocionó daré más aporte de la aplicación que estoy implementando para traer info de otro sistema que me da acceso al API.

Agradezco a Neftali por su colaboración

Saludos y Bendiciones a todos.
Responder Con Cita
  #8  
Antiguo 26-06-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Gracias por el aporte de la solución final.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 18-12-2022
genyus00 genyus00 is offline
Miembro
 
Registrado: jun 2010
Posts: 29
Poder: 0
genyus00 Va por buen camino
Cita:
Empezado por novato_erick Ver Mensaje
Logré por fin agregar los parámetros de encabezado de esta manera:

Código Delphi [-]
procedure TuConfigura.btnGet1Click(Sender: TObject);
var
  jValue: TJSONValue;
  miparametro: string;
  RESTRequest1: TRESTRequest;
  RESTClient1: TRESTClient;
  RESTResponse1 : TRESTResponse;
begin
  try
    RESTClient1 := TRESTClient.Create(nil);
    RESTRequest1 := TRESTRequest.Create(nil);
    RESTResponse1 := TRESTResponse.Create(nil);
    try
      RESTClient1.Accept := 'application/json, text/plain; text/json';
      RESTClient1.AcceptCharset := 'UTF-8, *;q=0.8';
      RESTClient1.BaseURL := eUrlApi.Text;
      RESTClient1.HandleRedirects := True;
      RESTClient1.AcceptEncoding := 'identity';
      RESTClient1.ContentType := 'application/json';
      RESTClient1.UserAgent := 'Embarcadero RESTClient/1.0';
//      RESTClient1.SynchronizedEvents := True;
      RESTClient1.FallbackCharsetEncoding := 'UTF-8';
      RESTClient1.AllowCookies := True;


      RESTRequest1.Client := RESTClient1;
//El parametro X-IFX-Token no es un estándar definido dentro de los campos de encabezados html https://en.wikipedia.org/wiki/List_o..._header_fields
      RESTRequest1.Params.AddItem('X-IFX-Token', eToken.Text,
        TRESTRequestParameterKind.pkHTTPHEADER, [poAutoCreated]);


{En este caso aquí se presentó también el dolor de cabeza ya que usando el procedimiento
 RESTReques1.AddParameter(nName, nValue, nKind) 
la respeusta era: http://app.midominio.com/api?action=customers&page=1  Bad Request 400 -0 bytes data returnetd. blablabla}

//la solución fué agregando un Cuerpo "Body" de esta manera ya obtuve la respuesta: {"class":"GET","action":"customers","customers":[],"count":"0"}
      RESTRequest1.AddParameter('Content-Type', 'application/json',
        TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);
      RESTRequest1.AddParameter('Accept', 'application/json',
        TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]); 

      miparametro := '{ "class": "GET", "action": ' + '"' + eParam1.Text + '",'
        + ' "page": "' + eParam2.Text + '" }';

      RESTRequest1.AddBody(miparametro, TRESTContentType.ctAPPLICATION_JSON);
      RESTRequest1.Method := TRESTRequestMethod.rmPOST;
      RESTRequest1.Timeout := 30000;
      RESTResponse1.ContentType := 'application/json';
      RESTRequest1.Response := RESTResponse1;
      RESTRequest1.Execute;

      jValue := RESTResponse1.JSONValue;
      if (ComboBox1.ItemIndex = 1) and (jValue is TJSONObject) then
        mRespuesta2.Text := jValue.ToString
      else
        mRespuesta2.Text := RESTResponse1.Content;

    finally
      RESTClient1.Free;
      RESTRequest1.Free;
      RESTResponse1.Free;
    end;
  except
    on E: Exception do
      ShowMessage(E.ClassName + ': ' + E.Message);
  end;
end;

Doy por solucionado este dilema por mi falta de experiencia en trabajar con aplicaciones web y Delphi honestamente me emocionó daré más aporte de la aplicación que estoy implementando para traer info de otro sistema que me da acceso al API.

Agradezco a Neftali por su colaboración

Saludos y Bendiciones a todos.
Hola tengo una duda con esta solucion: A que corresponden estos parametros?

miparametro := '{ "class": "GET", "action": ' + '"' + eParam1.Text + '",' + ' "page": "' + eParam2.Text + '" }';
Responder Con Cita
  #10  
Antiguo 18-12-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Empezado por genyus00 Ver Mensaje
Hola tengo una duda con esta solucion: A que corresponden estos parametros?

miparametro := '{ "class": "GET", "action": ' + '"' + eParam1.Text + '",' + ' "page": "' + eParam2.Text + '" }';
Esta api me solicitaba nombre del clie te más numero de ID en el caso de Panamá era el numero de cedula en otros países si no me equivoco es DNI

Saludos
Responder Con Cita
Respuesta



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
Invocar un api rest con headers IVAND Internet 16 Hace 2 Semanas 13:15:03
TjsonObject como parámetro SERVICIO REST igentile Varios 5 06-11-2015 14:17:06
Error "Oxygene no es un lenguaje admitido" mamen .NET 0 28-05-2010 12:44:10
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 09:41:57.


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