2012-06-04 2 views
7

Моя цель состоит в том, чтобы загрузить текстовый файл через HTTP POST Я использую Delphi 2009.Как загрузить файл с помощью http post? Delphi 2009

Скажем, например, по следующему адресу

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

Я понимаю, это может быть сделано с помощью Компонент TIdHttp. А следующий вызов

IdHttp1.Post(); 

Но я не могу понять, как настроить все то есть с указанием URL и в том числе файл будет размещен.

Спасибо.

ответ

8

TIdHTTP имеет две перегруженные версии Post(), которые принимают имя файла в качестве входных данных:

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; 

Обратите внимание, что вы публикуете на HTTPS URL, так что вы должны сначала назначить SSL-включен IOHandler, такие как TIdSSLIOHandlerSocketOpenSSL, к TIdHTTP.IOHandler собственности заранее.

+0

Спасибо, но когда я пытаюсь скомпилировать, я получаю следующую ошибку. «E2250 Нет перегруженной версии« Post », которую можно вызвать с помощью этих аргументов« любые идеи? – Trevor

+1

Тогда вы не используете обновленную версию Indy, потому что у текущей версии есть такие перегрузки: 'function Post (AURL: string; const ASourceFile: String {$ IFDEF STRING_IS_ANSI}; ADestEncoding: TIdTextEncoding = nil { $ ENDIF}): string; overload; 'и' procedure Post (AURL: string; const ASourceFile: String; AResponseContent: TStream); перегрузка; ' –

+0

Хорошо, я пытаюсь обновить Инди, но это боль, в которой у меня много проблем. Я никогда не устанавливал пакеты раньше. Есть ли способ сделать это с помощью TWebBrowser случайно? – Trevor

Смежные вопросы