2012-06-04 48 views
7

Mi objetivo es subir un archivo de texto a través de HTTP POST estoy usando Delphi 2009.¿Cómo cargo un archivo usando http post? Delphi 2009

decir, por ejemplo a la siguiente URL

https://www.example.com/ex/exampleAPI.asmx/Process

entiendo que se puede hacer mediante el uso de la Componente TIdHttp. Y la siguiente llamada

IdHttp1.Post(); 

, pero no puedo encontrar la manera de configurar todo esto es que especifica la url y que incluye el archivo que desea publicado.

Gracias.

Respuesta

8

TIdHTTP tiene dos versiones sobrecargadas de Post() que toman un archivo como entrada:

var 
    Response: String; 

Response := IdHTTP1.Post('https://www.example.com/ex/exampleAPI.asmx/Process', 'c:\filename.txt'); 

.

var 
    Response: TStream; 

Response := TMemoryStream.Create; 
IdHTTP1.Post('https://www.example.com/ex/exampleAPI.asmx/Process', 'c:\filename.txt', Response); 
... 
Response.Free; 

Tenga en cuenta que envías a una dirección URL HTTPS, por lo que necesita para asignar una primera IOHandler habilitado para SSL, tales como TIdSSLIOHandlerSocketOpenSSL, a la propiedad TIdHTTP.IOHandler de antemano.

+0

Gracias, pero cuando intento compilar recibo el siguiente error. "E2250 No hay una versión sobrecargada de 'Publicaciones' que se pueda llamar con estos argumentos" ¿alguna idea? – Trevor

+1

Entonces no está usando una versión actualizada de Indy, porque la versión actual tiene tales sobrecargas disponibles: 'función Publicar (AURL: cadena; const ASourceFile: Cadena {$ IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil { $ ENDIF}): cadena; overload; 'y' procedure Post (AURL: string; const ASourceFile: String; AResponseContent: TStream); sobrecarga; ' –

+0

Bien, estoy tratando de actualizar a Indy, pero es un dolor, estoy teniendo un montón de problemas. Nunca antes había instalado paquetes ... ¿Hay alguna manera de hacerlo con un TWebBrowser por casualidad? – Trevor

Cuestiones relacionadas