PDA

Ver la Versión Completa : Error Al Hacer peticiones get desde un form


webmasterplc
06-08-2012, 05:05:36
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:
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


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:


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
http://enlinea-ve.com/delphi/error.jpg

roman
06-08-2012, 06:45:11
Sí bueno, pero qué línea de tú código es la que produce el errror?

Por otro lado, mencionas

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
http://enlinea-ve.com/delphi/error2.jpg