Realizar un "Post HTTP" con la clase "TIdHttp" es relativamente sencillo. El método "Post" de dicha clase está sobrecargado, y aquí nos limitaremos a explotar una de sus posibilidades.
Creo que los comentarios al código fuente lo dicen todo. Tú también puedes comentar lo que te parezca respecto al mismo.
Código Delphi
[-]
uses
IdHTTP, IdMultipartFormData;
procedure TfrmPrincipal.btnPostClick(Sender: TObject);
var
idHttp: TIdHTTP;
datosPost: TIdMultiPartFormDataStream;
begin
datosPost := TIdMultiPartFormDataStream.Create;
try
datosPost.AddFormField('NombreCampo1', 'ValorCampo1');
datosPost.AddFormField('NombreCampo2', 'ValorCampo2');
idHttp := TIdHTTP.Create(Self);
try
mRespuestaPost.Text := idHttp.Post('http://www.url.com/', datosPost);
finally
idHttp.Free;
end;
finally
datosPost.Free;
end;
end;
En todo caso, es posible que la respuesta, el resultado del método "Post" no nos satisfaga. Por ejemplo, hace poco me he topado con la necesidad de hacer un "Post HTTP" en cierto programa y, la respuesta no es, precisamente, una cadena, sino un archivo...
Es decir, que el resultado del método "Post" no me servía de mucho en este caso concreto que estoy refiriendo. ¿Qué hacer, pues, si la respuesta es un archivo, por ejemplo, y no una cadena?
Yo he utilizado el propio componente "IdHttp". Este tiene una propiedad "Response", que a su vez cuenta con una propiedad de nombre "ContentStream". En el evento "OnWorkEnd" del componente "TIdHttp" dicha propiedad "ContentStream" contiene el archivo que se sirvió como respuesta del método "Post".
Es decir, que sí, que en este truco se ha mostrado una de las formas de realizar un "Post HTTP" con el componente "IdHttp", pero, que, obviamente, dicho componente da no poco de sí, y pone a nuestra disposición no pocas posibilidades de personalizar la "pregunta al Servidor" (Request) y también bastantes propiedades que nos informan de la respuesta (Response) del mismo.