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 06-11-2019
PEIIB PEIIB is offline
Miembro
 
Registrado: mar 2016
Posts: 21
Poder: 0
PEIIB Va por buen camino
Llamada API funciona solo la primera vez -Bad Request-

Buenos días compañeros.

Tengo un problemilla con una llamada API. El caso es que tengo un código que funciona, pero... sólo la primera vez!
Si ejecuto de nuevo el mismo código me da el error 'HTTP/1.1 400 Bad Request'
Este es el código. A ver si podeis echarme una mano:

Código Delphi [-]
procedure TFinici.GetProjects();
var S: TStringList;
  obj:TlkJSONbase;
  vLevel:Integer;
  Json: string;
  JsonToSend: TStringStream;
  SResposta: String;
begin
   S := TStringList.Create;

   try
     HTTP1.Request.ContentType := 'application/json';
     HTTP1.Request.BasicAuthentication:= false;
     HTTP1.Request.CustomHeaders.FoldLines := False;
     HTTP1.Request.CustomHeaders.Add('Authorization:Bearer '+ tok1+ tok2+ tok3+ tok4);  //Constantes globales
     HTTP1.Request.CharSet := 'utf-8';

     Json:= '{'
          + '  "companyId":"xxxxxxxxxxx"'
          + '}';
     //JsonToSend.Clear;   //Da error acces violation
     //JsonToSend.Free;    //Da error acces violation
     JsonToSend := TStringStream.Create(Json, TEncoding.UTF8);

     try
        //EL siguiente comando funciona solo la primera vez. En la segunda ejecución, da el error   HTTP/1.1 400 BadRequest
        sResposta := HTTP1.Post('https://api.sesametime.com/v2/project/getprojectsbycompany', JsonToSend);
     except
        on E: Exception do
          ShowMessage('Error on request: '#13#10 + e.Message);
     end;

     Memo2.Clear;
     Memo2.Text:= Sresposta;

      // Conseguir la cadena formateada (componente LkJSON).------------------------------------
      obj := TlkJSONbase.Create();
      // proteccion
      try
        vLevel := 0;
        obj := TlkJSON.ParseText(sResposta);
        // obtener respuesta formateada
        MrespOKnoms.Lines.Text := GenerateReadableText(obj, vLevel);
        Application.ProcessMessages;
      finally
        FreeAndNil(obj);
      end;

   finally
     S.Free;
     JsonToSend.Free;
   end;
end;

El componente usado es TidHTTP con un Handler IdSSLIOHandlerSocketOpenSSL, correndo en Delphi 10.3

Muchas gracias de antemano

Última edición por Casimiro Notevi fecha: 06-11-2019 a las 19:30:52.
Responder Con Cita
  #2  
Antiguo 06-11-2019
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Creo que el problema puede estar en esta línea:
Código Delphi [-]
   HTTP1.Request.CustomHeaders.Add('Authorization:Bearer '+ tok1+ tok2+ tok3+ tok4);

Prueba agregando una línea de código para limpiar la cabecera:

Código Delphi [-]
  HTTP1.Request.CustomHeaders.Clear;
   HTTP1.Request.CustomHeaders.Add('Authorization:Bearer '+ tok1+ tok2+ tok3+ tok4);
Responder Con Cita
  #3  
Antiguo 07-11-2019
PEIIB PEIIB is offline
Miembro
 
Registrado: mar 2016
Posts: 21
Poder: 0
PEIIB Va por buen camino
Si funcionó!!

Muchas gracias, orodriguezca
y a todos quienes hos hayais interesado.


Saludos cordiales
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
Solo una llamada a Onchange de tedit. ¿Se puede? jotaeme Varios 4 06-03-2009 11:43:04
Solo imprime la primera vez Chogo Impresión 6 20-07-2006 00:24:57
Imprimir el header solo en la primera hoja Jorge Taveras Impresión 3 27-10-2005 13:21:48
Primera llamada, primera roman Noticias 12 06-07-2005 21:22:49
Encabezado solo en la primera pag Carlos Arevalo Impresión 2 01-12-2004 00:17:10


La franja horaria es GMT +2. Ahora son las 16:32:16.


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