Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Error handling en Indy - idHTTP (https://www.clubdelphi.com/foros/showthread.php?t=91643)

lago 24-03-2017 15:52:28

Error handling en Indy - idHTTP
 
Hola!, a ver si alguien puede ayudarme :)

Ando con XE7 y C++ y no consigo encontrar la manera de manejar los errores de este componente.

Básicamente necesito que cuando el servidor falle no diga nada... si el servidor esta online todo funciona bien, pero
cuando lo apunto a una dirección invalida como la que esta ahora "localhosts" necesito controlar el mensaje de Socket Error
que me da...

Código:

TIdMultiPartFormDataStream *stream=new TIdMultiPartFormDataStream();

 try
  {
      stream->AddFormField("idcliente", "IDLALALAL");
      this->Memo1->Lines->Text = IdHTTP1->Post("http://localhosts/miscript.php", stream);

        stream->Free();
        IdHTTP1->Free();
  }
 
        catch(const EIdHTTPProtocolException &E)
                {
                  ShowMessage("Error http");
                MessageDlg(E.Message, mtError, TMsgDlgButtons() << mbOK, 0);
                }

He buscado mil y una de este tipo pero no consigo que entre en el "catch"...

Alguna sugerencia? gracias mil!

lago 25-03-2017 10:55:35

Juraría que lo había probado pero resulta que ahora si funciona esto... A VECES.... no entiendo ná

Código:

catch (const Exception &)
{
 ShowMessage("Error http");
}

:)

Snaked 26-03-2017 13:02:42

prueba a poner esto a ver si suena la flauta

Cita:

catch (...) {

ShowMessage("Error de Http");
}

lago 26-03-2017 13:22:55

Hola Snaked, gracias por responder... lo he intentado también pero nada, el caso es que me desconcierta por que aún siendo siempre el mismo tipo de error "host not found" a veces entra en esa condición y a veces no... me tiene frito :)

Snaked 26-03-2017 13:33:06

lago: si te dice eso es porque no encuentra ese ordenador en la red..... sabes si tienes permisos abiertos para el firewall etc?

has probado a controlar el evento OnError o similar en caso de que falle el Connect? pasame el codigo si quieres y pruebo yo a ver si tambien me da ese errror

espera...he revisado tu codigo y donde pones Post("Http://localhosts no es con s al final sino "localhost" o prueba tambien a poner http://127.0.0.1/myscript.php"

lago 26-03-2017 13:38:49

Snaked, el error que da lo provoco apuntando el POST a una máquina inexistente para hacer que salte el error.
El código es el que puse en el primer post, a veces salta mi ShowMessage, y otras veces explota apuntando a

IdHTTP1->Post("http://localhosts/miscript.php", stream);

Por no poder conectar, por eso me tiene desconcertado, si entra en la condición debería entrar siempre y no a veces :?

Gracias por la ayuda :)

Snaked 26-03-2017 15:45:06

Hola lago.....he estado mirando por internet y tengo estas páginas en las que se habla sobre eso..... miralas a ver si arrojasen alguna luz sobre el Indy-tema

http://stackoverflow.com/questions/3...implementation

https://sites.google.com/site/cppbuildermaster/t

y fijate como implementa aqui el procedimiento try catch con messagebox para el mensaje de error

Cita:

----------------------------------------------------
void __fastcall TSMTPThread::Execute()
{
try
{
idSmtp->Connect();
try
{
idSmtp->Send(idMess);
}
__finally
{
idSmtp->Disconnect();
}
}
catch(const Exception &e)
{
MessageBox(NULL, AnsiString(e.Message).c_str(), "SMTP Error", MB_OK | MB_ICONERROR);
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

lago 26-03-2017 20:56:10

Gracias por las molestias Snaked, he visto los artículos que comentas y ya había visto algo similar, el resultado es el mismo, a veces salta el error y otras no, seguiré investigando... muchas gracias por tu tiempo

Snaked 29-03-2017 17:04:16

hola Lago..... que tal vas??? has encontrado solucion al problema?

lago 31-03-2017 13:14:58

Hola Snaked! perdona que se me pasó... de momento no, he tenido que lidiar con otras cosas y ha quedado ahi parado. Si consigo algo lo posteo aqui. Muchas gracias por tu interés :)))


La franja horaria es GMT +2. Ahora son las 11:19:12.

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