Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2008
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Post Llamada HTTP a una URL

Hora foro, estoy realizando una aplicacion en delphi y necesito realizar una llamada HTTP a una URL con el metodo POST pasándole un parámetro llamado "XML". Y luego la URL, me devolverá un XML.

Es la primera vez que hago algo parecido y no se por donde empezar. Alguien podría orientarme. De que manera puedo hacer la llamada a la URL y enviarle el XML. Como obtengo el XML que me devuelve y de que manera puedo leer su contenido.

El formato del XML es algo parecido a esto:

<ROOT>
<AUTHENTICATION>
<LOGIN>gestorsms</LOGIN>
<PASSWORD>pwdgestor</PASSWORD>
</AUTHENTICATION>
<METHOD>enviar</METHOD>
<INPUT>
<BODY>texto</BODY>
</INPUT>
</ROOT>

Gracias de antemano por vuestra ayuda.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #2  
Antiguo 22-05-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Para el asunto del HTTP POST, puedes echar un vistazo a este truco (que usa WinInet) o a este otro truco que usa el componente IdHttp de los componentes Indy. Respecto de cómo "parsear" el XML que obtengas como respuesta, puedes buscar información sobre el componente "TXmlDocument", que igual te sirve.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-10-2008
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Post

Gracias dec, por tu comentario. Lo he seguido y he realizado el siguiente codigo para hacer la llamada a la URL.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  http: TIdHttp;
  xml: TStrings;
  respuesta: string;
begin
  http := TIdHTTP.Create(Self);
  xml := TStringList.Create;
  try
    xml.text:='codigo xml';
    XML.text:=xml.text + 'mas codigo xml';
   respuesta := http.Post('www.mipagina.com', xml);
   ShowMessage('Respuesta: ' + respuesta);
  finally
    http.Free;
    XML.Free;
  end;

end;

Este codigo me funciona y hace el post a la URL, pero la URL me da un error indicando que las sintaxis del codigo xml que yo le envio no es la correcta.
Creo que el problema viene de que el parametro "xml" que yo envio es del tipo TStrings y la URL solo esta leyendo la primera linea, ya que espera un parametro de tipo string.
No puedo poner todo el codigo xml en la primera linea del Tstrings ya que tiene mas de 255 caracteres y a la hora de compilar delphi me da un error, indicando que el literal del Strings no puede superar 255 caracteres.



Sabría alguien de que manera puedo enviar dicho codigo xml, por medio del post, en un solo string.

Gracias y saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #4  
Antiguo 21-10-2008
chalao chalao is offline
Miembro
 
Registrado: sep 2008
Posts: 26
Poder: 0
chalao Va por buen camino
Yo tenía un problema parecido para mandar Html como un ansistring.

Échale un vistazo a este post donde lo preguntaba, a ver si te sirve:
http://www.clubdelphi.com/foros/showthread.php?t=60858

Un saludo.
Responder Con Cita
  #5  
Antiguo 21-10-2008
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Smile

Gracias, con tu comentario ya lo he solucionado.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  http: TIdHttp;
  xml: TStrings;
  respuesta: string;
  datosPost: TIdMultiPartFormDataStream;
begin
  http := TIdHTTP.Create(Self);
  xml := TStringList.Create;
  datosPost := TIdMultiPartFormDataStream.Create;
  try
    xml.text:='codigo xml menos de 255 caracteres';
    XML.text:=xml.text + 'codigo xml menos de 255 caracteres';
    datosPost.AddFormField('xml', xml.text );
   respuesta := http.Post('http://www.miweb.es', datospost);
   ShowMessage('Respuesta: ' + respuesta);
  finally
    http.Free;
    XML.Free;
    datospost.free;
  end;

end;

Con este codigo me ha funcionado a la perfeccion. Pero ahora se plantea otro problema. En la variable "respuesta" el post almacena la respuesta de la URL. El contenido de respuesta es codigo xml y necesito poder moverme por sus etiquetas para capturar la información que me devuelve la URL y almacenarla en una tabla. Como puedo conseguir esto?

Os comento que estoy trabajando con Delphi 5.

Saludos y gracias.
__________________
El saber no ocupa lugar.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
HTTP ¿cifrado? N.P.I lag_0 Internet 3 13-04-2007 09:04:29
http server para PDA Casimiro Notevi Varios 5 05-11-2005 04:12:49
HTTP Indy bochi Internet 1 27-12-2003 01:57:34
MozPHP: PHP sin servidor HTTP ... kinobi PHP 0 03-09-2003 11:19:52
Http Server ebeltete Internet 0 17-05-2003 02:57:39


La franja horaria es GMT +2. Ahora son las 23:10:11.


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
Copyright 1996-2007 Club Delphi