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 26-11-2008
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino
Cliente http

Hola a todos.
A ver si me podéis echar una mano. He estado buscando trucos, y casos similares al mío y no he visto nada que me termine de valer, así que al final he optado por lanzar la pregunta.

A ver. Por un lado tengo preparado un servidor de páginas ASPx. Y por otro lado me estoy construyendo una aplicación Delphi que se conecte a dicho servidor lanzándole peticiones de páginas. Dichas páginas no las voy a visualizar en pantalla. Simplemente quiero trabajar con el código fuente de esas páginas.

Es decir. Es como si manualmente abriése el iExplorer, me concectase a la página en cuestión, y cuando ya le tuviese cargada en pantalla le doy a "Ver" -> "Código fuente". ¿Me explico? Pues bien, todo esto pero de forma automática y desde dentro del programa Delphi.

He estado probando el componente TIdHTTP, y sus métodos Get() y Post().

Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
Var
  S:STRING;
begin
  Memo1.Lines.Clear;
  try
    IdHTTP1.Host:='dirección ip';
    IdHTTP1.Port:=80;
    IdHTTP1.Request.ContentType := 'text/html; charset=UTF-8';
    S:= IdHTTP1.Get('/ruta a la página?parametro=valor');
    Memo1.Lines.Add( S );
  except
    on e:Exception do Begin
      ShowMessage(e.Message);
      ShowMessage(IntToStr(IdHTTP1.ResponseCode)+'-'+IdHTTP1.ResponseText);
    End;
  end;
end;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  aStream: TMemoryStream;
  Params: TStringStream;
begin
  aStream := TMemoryStream.create;
  Params := TStringStream.create('');
  try
    with IdHTTP1 do
    begin
      Params.WriteString(URLEncode('parametro=' + 'valor'));
      Host:='dirección ip';
      Port:=80;
      Request.ContentType := 'text/html; charset=UTF-8';
      try
        Post('http://dirección ip/ruta a la página', Params, aStream);
      except
        on E: Exception do
          showmessage('Error encountered during POST: ' + E.Message);
      end;
    end;
showmessage('aStream.Size='+IntToStr(aStream.Size)+#13#10+
            'aStream.Position='+IntToStr(aStream.Position));
  aStream.WriteBuffer(#0' ', 1);
  aStream.Position := 0;
  Memo1.Lines.LoadFromStream(aStream);
  except
  end;
end;

Por ahora sólo he conseguido respuesta del servidor con Get(). El Post() siempre me da una respuesta vacía, y no sé por qué. ¿Alguna pista?

Las primeras pruebas las estoy haciendo de forma que el servidor me devuelva texto plano, sin más (ni etiquetas HTML, ni nada). Primer problema: las vocales acentuadas y el signo º (de nº) y otros me llegan distorsionados. He probado a cambiar el valor de IdHTTP1.Request.ContentType, pues según he encontrado en la ayuda es donde se indica el tipo de codificación que se espera recibir. Además me he asegurado de que coincida con el suministrado desde el servidor (UTF-8). Pero no hay manera. Siempre me llega distorsionado. Sin embargo, si lanzo la petición desde iExplorer, ahí sí se ve bien en su código fuente. ¿Alguna idea?

Esto último me preocupa especialmente. Porque dicho servidor ASPx (ahora en pruebas) en un futuro proveerá información cifrada, y por lo tanto no legible. Así que me estoy empezando a acojonar con los caracteres raros.

¿Alguien sabe de algún otro modo para poderme conectar a un servidor de páginas y capturar directamente todos los bytes que me mande sin que nada me los interprete y cambie antes de que yo los reciba? ¿Por ejemplo quizá utilizando el componente TClientSocket (también lo he probado pero nunca recibe la respuesta del servidor)?

También he provado a utilizar un TWebBrowser y acceder después a su contenido. Pero creo que esto último no es posible. No he encontrado la manera.

Por favor, ayudaaaaaaaaaa...

Muchas gracias.
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
Llamada HTTP a una URL URBANO Internet 4 21-10-2008 18:21:37
HTTP ¿cifrado? N.P.I lag_0 Internet 3 13-04-2007 09:04:29
socket cabecera http acertij022 Internet 1 23-01-2006 22:23:18
HTTP Indy bochi Internet 1 27-12-2003 01:57:34
Http Server ebeltete Internet 0 17-05-2003 02:57:39


La franja horaria es GMT +2. Ahora son las 11:27:38.


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