Hacer un POST o un GET a una URL con Delphi y Indy10

procedure TForm1.Button1Click(Sender: TObject);
var
aBMP : TBitmap;
Stream: TMemoryStream;
begin
Stream := TMemoryStream.Create;
IdHTTP1.Get('http://www.stocktest.org/images.php', Stream);
Stream.Seek(0, soFromBeginning);
Stream.SaveToFile('C:\image1.png');
image2.Picture.LoadFromFile('C:\image1.png');
aBMP := TBitmap.Create;
try
aBMP.Assign(Image2.Picture.Graphic);
Image1.Picture.Assign(aBMP);
finally
aBMP.Free;
end;
end;
La parte del POST es mas sencilla, simplemente quiero enviar a la URL vĂa POST el usuario y el password de Ă©sta, y lo hago utilizando un TIdMultiPartFormDataStream. Como podĂ©is ver tambiĂ©n es bastante sencillo, y con estos componentes nada se nos resiste a atacar tecnologĂas web con nuestro Delphi de siempre. Encontrareis mĂ¡s informaciĂ³n del componente en la pĂ¡gina web oficial de Indy, ademĂ¡s hay miles de ejemplos por la red.
uses
IdMultipartFormData;
procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
begin
data := TIdMultiPartFormDataStream.Create;
try
data.AddFormField('login', 'admin');
data.AddFormField('pass', 'myPass');
Memo1.Lines.Text := IdHTTP1.Post('http://www.stocktest.org/images.php', data);
finally
data.Free;
end;
end;
Excelente Post. Tambien uso Delphi (la versiĂ³n 7 especificamente) y estoy usando el componente IdHTTP para consumir de un servicio hecho en PHP. Si el servicio retorna datos usando contenttype text/html; charset=UTF-8, puedo procesarlo sin novedad, pero si el servicio retorna application/json; charset=utf-8, al tratar de obtener lo que retorna el servicio, consigo algo distinto a lo que envĂa el servicio (una tabla HTML :/). Alguna idea del por quĂ© de este comportamiento tan extraño ? Por cierto, le estoy asignando al componente idhttp.Request.ContentType:='application/json'.
ReplyDeleteGracias de antemano