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 30-10-2015
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 22
vicvil Va por buen camino
Ñuño, ¿tienes algún ejemplo de cómo hacer esto con Synapse?
Responder Con Cita
  #2  
Antiguo 02-11-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por vicvil Ver Mensaje
Ñuño, ¿tienes algún ejemplo de cómo hacer esto con Synapse?
Normalmente dejo que sea el propio Synapse que se encargue del trabajo sucio, ya que él mismo incluye clases que implementan los protocolos más comunes (FTP, SMTP, POP3, HTTP...).

Intentaré describir tu caso (más o menos y de memoria):
Código Delphi [-]
  VAR
    ArchivoXML: TFileStream;
    ClienteHTTP: THTTPSend;
  BEGIN
    ClienteHTTP := THTTPSend.Create;
    TRY
      ClienteHTTP.Protocol := '1.1';
      ClienteHTTP.UserAgent := 'Synapse HTTP Client'; { Puedes poner lo que te plazca. }
      ClienteHTTP.KeepAlive := TRUE;
      ClienteHTTP.Cookies.Values['TOKEN'] := 'YZD0II2ApZjlM';
      ClienteHTTP.MimeType := 'application/ms-excel';
      IF NecesitaClave THEN
      BEGIN
        ClienteHTTP.Username := EditNombreUsuario.Text;
        ClienteHTTP.Password := EditClave.Text
      END;
      ArchivoXML := TFileStream.Create (RutaArchivoXML, fmOpenRead);
      TRY
        ClienteHTTP.Document.CopyFrom (ArchivoXML, ArchivoXML.Size)
      FINALLY
        FreeAndNil (ArchivoXml) { Sólo destruye si existe, si no, lo ignora y evita el error. }
      END;
      ClienteHTTP.HTTPMethod ('POST', EditURL.Text);
      Application.MessageBox (
        Format ('Resultado:'#10'[%d] %s ', [ClienteHTTP.ResultCode, ClienteHTTP.ResultString])
      )
    FINALLY
      ClienteHTTP.Free
    END
  END
Seguramente tengas que afinar alguna cosa, pero más o menos sería así. Dudo que tengas que usar la propiedad "Headers".
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 02-11-2015
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 22
vicvil Va por buen camino
Gracias Ñuño por tu cooperación,
Estoy implementando tu ejemplo adaptándolo a mis necesidades, pero cuando envío el archivo recibo el código 500 en http.resultcode, esto me indica que "El servidor encontró una condición inesperada que le impidió cumplir con la solicitud".
Yo creo que debe ser porque faltan partes del encabezado que no he podido encontrar cómo ingresar, como "Accept:", "Referer:", "Accept-Languaje:", "Accept-Encoding:", etc.
Intenté ingresarlo de la siguiente forma:

Código Delphi [-]
HTTP.Headers.add( 'POST /cgi_dte/UPL/DTEUpload HTTP/1.0'+ CRLF +
                        'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, applicatio/ms-excel, application/msword, */*' + CRLF +
                        'Referer:http://www.empresa.cl'+ CRLF +
                        'Accept-Languaje: es-cl' + CRLF +
                        'Content-Type: multipart/form-data: boundary=---------------------------' + Bound + CRLF +
                        'Accept-Encoding: gzip, deflate' + CRLF +
                        'Host:https://maullin.sii.cl/cgi_dte/UPL/DTEUpload'+ CRLF +
                        'Content-Length:' + IntToStr(F.Count) + CRLF +
                        'Cache_Control: no-cache' + CRLF );

pero me aparece un error de Access Violation.
Responder Con Cita
  #4  
Antiguo 03-11-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El error 500 lo envía el servidor, y el problema está en el servidor. Él debería decir qué falla (cuál es esa condición inesperada). Si el programa servidor no lo has hecho tú, pregunta a quien lo hizo.

Por otro lado, la mitad o más de lo que añades en la propiedad "Headers" debes definirlo en otras propiedades, para que la clase construya correctamente la cabecera. Ten en cuenta que "Headers" es un TStringList, yo no añadiría los saltos de línea sino que añadiría cada línea por separado.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 05-11-2015
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 22
vicvil Va por buen camino
Gracias ñuño por tu aporte
Responder Con Cita
  #6  
Antiguo 05-11-2015
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 22
vicvil Va por buen camino
Bueno después de probar varias cosas, entre ellas lo de synapse que amablemente me enseño ñuño, me decidí por probar nuevamente con indy y con ambos me daba el mismo resultado de error "HTTP/1.1 500". Así que me metí a la página web de la institución a la que debo enviar el archivo y me pude dar cuenta que la dirección no era la misma que aparece en el documento el cual ellos mismos redactaron, así que cambié el host y ahí resultó y ahora me envía el mensaje "HTTP/1.1 200 OK".
El problema que tengo ahora es que el stream que viene de vuelta viene encriptado y mi pregunta es ¿con que componente indy desencripto ese resultado?
Responder Con Cita
  #7  
Antiguo 06-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por vicvil Ver Mensaje
El problema que tengo ahora es que el stream que viene de vuelta viene encriptado y mi pregunta es ¿con que componente indy desencripto ese resultado?
Crea un hilo nuevo con esa duda, y da detalles porque no somos adivinos
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
Dudas sobre Webservices Soap y Indy XaviQ OOP 6 30-03-2011 07:12:18
Error Unknown Protocol componente IdHTTP de Indy Bertifox2008 Internet 0 17-04-2009 01:10:24
WebBrowser con Indy idhttp sur-se Internet 2 10-10-2008 11:36:31
Problemas y dudas enviando comandos al servidor FTP con Indy Gromeer Internet 8 01-02-2008 23:27:04
Indy IdHTTP Ejemplo andre Internet 1 11-02-2004 09:06:31


La franja horaria es GMT +2. Ahora son las 20:27:45.


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