2012-06-04 8 views
7

Il mio obiettivo è quello di caricare un file di testo via posta HTTP Sto usando Delphi 2009.Come posso caricare un file utilizzando il post http? Delphi 2009

diciamo per esempio il seguente URL

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

Capisco che può essere fatto utilizzando la Componente TIdHttp. E la seguente chiamata

IdHttp1.Post(); 

Ma io riesco a capire come impostare tutto cioè specificando l'indirizzo e incluso il file per essere pubblicato.

Grazie.

risposta

8

TIdHTTP ha due versioni di overload di Post() che richiedono nomi di file come input:

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; 

Nota che stai postando un HTTPS URL, quindi è necessario assegnare dapprima un IOHandler SSL-enabled, come il TIdSSLIOHandlerSocketOpenSSL, alla proprietà TIdHTTP.IOHandler anticipo.

+0

Grazie, ma quando provo a compilare ottengo il seguente errore. "E2250 Non esiste una versione sovraccaricata di 'Post' che possa essere chiamata con questi argomenti" qualche idea? – Trevor

+1

Quindi non si sta utilizzando una versione aggiornata di Indy, perché la versione corrente ha tali sovraccarichi disponibili: 'function Post (AURL: string; const ASourceFile: String {$ IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil { $ ENDIF}): stringa; overload; 'e' procedure Post (AURL: string; const ASourceFile: String; AResponseContent: TStream); sovraccarico; ' –

+0

Ok, sto cercando di aggiornare Indy, ma è un dolore che sto avendo un sacco di problemi. Non ho mai installato pacchetti prima. C'è un modo per farlo con un TWebBrowser? – Trevor

Problemi correlati