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 10-09-2019
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
idHttp post con respuesta Json

Hola,
Estoy enviando un Json a una web para la inserción de datos y para el envio todo correcto.
El problema esta cuando da algun error.
Me han comentado que los posibles errores los responden en un json de respuesta a la petición, pero no se como recuperar este Json


el codigo que utilizo para enviar mi Json es el siguiente:


Código Delphi [-]


var

  sResponse: string;
  JsonToSend: TStringStream;
  IdSSL : TIdSSLIOHandlerSocketOpenSSL;
begin
  JsonToSend := TStringStream.Create(Utf8Encode(datos)); 
  respuesta := TStringStream.Create;
  try
    idHTTP.Request.ContentType := 'application/json';
    idHTTP.Request.CharSet := 'utf-8';
    IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    IdHTTP.IOHandler := IdSSL;
    IdHTTP.Request.CustomHeaders.clear;
    IdHTTP.Request.CustomHeaders.AddValue('MTC-API-KEY', 'xxxxxxxxxx');
    IdSSL.SSLOptions.Method := sslvTLSv1;
    IdSSL.SSLOptions.Method := sslvTLSv1;
    IdSSL.SSLOptions.Mode := sslmUnassigned;
    try
      form1.Memo2.Lines.Clear;
      form1.Memo2.Lines.Add(datos);
      sResponse := idHTTP.post('https://xxxxxxxxxx/index.php?entryPoint=connector', JsonToSend);
      form1.Memo1.Lines.Clear;
      Form1.Memo1.lines.Add('Response code');
      Form1.Memo1.lines.Add(inttostr(idhttp.ResponseCode));
      Form1.Memo1.lines.Add('Response text');
      Form1.Memo1.lines.Add(idhttp.ResponseText);
      Form1.Memo1.lines.Add(sResponse);
    except
      on E: Exception do begin
        Form1.Memo1.lines.Add(e.Message);
        Form1.Memo1.lines.Add('Response code');
        Form1.Memo1.lines.Add(inttostr(idhttp.ResponseCode));
        Form1.Memo1.lines.Add('Response text');
        Form1.Memo1.lines.Add(idhttp.ResponseText);
        Form1.Memo1.lines.Add(sResponse);
      end
    end;
  finally
    JsonToSend.Free;
  end;
Responder Con Cita
  #2  
Antiguo 10-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿No te viene en sResponse?

Código Delphi [-]
sResponse := idHTTP.post('https://xxxxxxxxxx/index.php?entryPoint=connector', JsonToSend);
Responder Con Cita
  #3  
Antiguo 16-09-2019
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
Hola,
Despues de mucho investigar he encontrado la solución:
Código Delphi [-]
 IdHTTP.HTTPOptions := idHTTP1.HTTPOptions + [hoNoProtocolErrorException, hoWantProtocolErrorContent]


En el componente idHttp faltava la activacion de
hoNoProtocolErrorException y hoWantProtocolErrorContent
Responder Con Cita
  #4  
Antiguo 16-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por compartirlo.
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
Decodificar respuesta de un https con IdHTTP vicvil Internet 10 26-11-2015 11:27:39
Peticion POST con componente idHTTP JuanOrtega Internet 3 25-05-2015 23:41:19
Hacer POST con el componente IdHTTP ZayDun Varios 1 08-08-2008 00:23:39
mandar un post http con idHTTP hidal C++ Builder 6 16-08-2006 01:02:57
IBDatase Insert Post Edit Post ariefez Firebird e Interbase 4 12-10-2005 01:53:04


La franja horaria es GMT +2. Ahora son las 12:25:09.


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