Ver Mensaje Individual
  #1  
Antiguo 06-11-2019
PEIIB PEIIB is offline
Miembro
 
Registrado: mar 2016
Posts: 21
Reputación: 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