Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Delphi para la web (https://www.clubdelphi.com/foros/forumdisplay.php?f=51)
-   -   Error Al Hacer peticiones get desde un form (https://www.clubdelphi.com/foros/showthread.php?t=79737)

webmasterplc 06-08-2012 05:05:36

Error Al Hacer peticiones get desde un form
 
Buenas Tengo un inconveniente estoy haciendo algo para peticiones get desde delphi pero al llamar el procedimiento me da este error
raised exception class eidhttpprotocolexception with message

el codigo de la unidad es:
Código Delphi [-]
unit UnitEnvio;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  StdCtrls, Buttons, shellapi, IdHTTP,
  ComCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    btn1: TButton;
    mmo1: TMemo;
    edtusuario: TEdit;
    edtpass: TEdit;
    edtcel: TEdit;
    edturl: TEdit;
    edt1: TEdit;

    function componerURLFinal () : string;
    procedure mmo1Exit(Sender: TObject);
    procedure btn1Click(Sender: TObject);



  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function enviarSMS (url : string) : string;
var
  obtenerHTTP : TidHTTP;
  web : TStringList;
begin
  web := TStringList.Create;
  obtenerHTTP := TidHTTP.Create(nil);
  try
    web.Text := obtenerHTTP.Get(url);
  except
    on e: exception do
    begin
      obtenerHTTP.Free;
    end;
  end;
  enviarSMS := web.Text;
end;

function Tform1.componerURLFinal;
var
  url, numeroTelefono, mensaje, usuario, contrasena : string;
  urlFinal : string;
begin
  url := 'http://localhost/webservices/SendSms';
  numeroTelefono := edtcel.Text;
  mensaje := mmo1.Text;
  usuario := edtusuario.Text;
  contrasena := edtpass.Text;

  urlFinal := url + '/?phonenumber=' + numeroTelefono +
      '&mensaje=' + mensaje +
      '&user=' + usuario + '&password=' + contrasena;

  edturl.Text := urlFinal;
end;




procedure TForm1.mmo1Exit(Sender: TObject);
begin
componerURLFinal;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  web:TStringList;
begin
web.text:= enviarSMS(edturl.Text);
end;

end.

roman 06-08-2012 06:24:00

Sería bueno que indicaras exactamente en qué parte del código se produce el error.

Mientras tanto, algo que puedo comentarte es que tu línea

Código Delphi [-]
obtenerHTTP.Free;

en la función enviarSMS debe estar protegida no por un bloque try-except, sino por uno try-finally. Si requieres ambas cosas, manejar excepciones y proteger recursoos, entonces puedes anidar un bloque dentro de otro:

Código Delphi [-]
try
  try
    { Código }
  except
    { Manejo de excepciones }
  end;
finally
  { Liberación de recursos }
end;

Tal como lo tienes, tu objeto sólo se destruirá en caso de una excepción, pero en un caso normal no.

// Saludos

webmasterplc 06-08-2012 06:34:01

Hermano aca adjunto el en la captura de pantalla

roman 06-08-2012 06:45:11

Sí bueno, pero qué línea de código es la que produce el errror?

Por otro lado, mencionas

Cita:

Empezado por webmasterplc
el procedimiento me da este error
raised exception class eidhttpprotocolexception with message

¿No se indica cuál es el mensaje en específico?

// Saludos

webmasterplc 06-08-2012 06:57:50

el error esta en la linea 1702 de la unida idhttp (Debe ser en lo sIndy) aca esta el error coompleto esto sucede al darle clik al boton


La franja horaria es GMT +2. Ahora son las 07:35:23.

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