Delphi 如何使用http post上传文件?德尔福2009

Delphi 如何使用http post上传文件?德尔福2009,delphi,file-upload,http-post,delphi-2009,indy,Delphi,File Upload,Http Post,Delphi 2009,Indy,我的目标是通过HTTP post上传一个文本文件,我正在使用Delphi2009 比如说下面的URL 我知道这可以通过使用TIdHttp组件来完成。下面的电话呢 IdHttp1.Post(); 但我不知道如何设置所有内容,例如指定url并包括要发布的文件 谢谢。TIdHTTP有两个重载版本的Post()以文件名作为输入: var Response: String; Response := IdHTTP1.Post('https://www.example.com/ex/exampleA

我的目标是通过HTTP post上传一个文本文件,我正在使用Delphi2009

比如说下面的URL

我知道这可以通过使用TIdHttp组件来完成。下面的电话呢

IdHttp1.Post();
但我不知道如何设置所有内容,例如指定url并包括要发布的文件


谢谢。

TIdHTTP
有两个重载版本的
Post()
以文件名作为输入:

var
  Response: String;

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


请注意,您正在发布到
HTTPS
URL,因此需要首先将启用SSL的IOHandler(例如
TIdSSLIOHandlerSocketOpenSSL
)分配给
TIdHTTP.IOHandler
属性。

谢谢,但当我尝试编译时,会出现以下错误。“E2250没有可以用这些参数调用的重载版本的‘Post’”“有什么想法吗?那么您没有使用Indy的最新版本,因为当前版本确实有这样的重载可用:
函数Post(AURL:string;const ASourceFile:string{$IFDEF string_is_ANSI};ADestEncoding:TIdTextEncoding=nil{$ENDIF}):字符串;超载
过程Post(AURL:string;const-ASourceFile:string;AResponseContent:TStream);超载好的,我正在尝试更新Indy,但是我有很多麻烦,这很痛苦。我以前从未安装过软件包。。有没有一种方法可以偶然使用TWebBrowser?要使用
TWebBrowser
,您必须将整个文件数据存储到包含
varByte
数组的
varByte
变量中(使用
varrarycreate()
分配
Variant
,然后您可以将文件数据复制到其内存块中),然后,您可以将
变量
传递给
TWebBrowser.Navigate()
方法的
PostData
参数<不过,code>TWebBrowser
是一个可视组件。它不用于非视觉工作。不过,你可以改用微软的
WinInet/WinHTTP
API。嘿,这样我就可以更新Indy组件了。但是我在这两种情况下都得到了一个错误。对于您提到的第一个案例,我得到一个“HTTP/1.1500内部服务器错误”-您知道这可能意味着什么吗?对于第二种情况,我得到“不兼容类型:'TStream'和'procedure,untyped pointer或untyped parameter'”,显然它无法处理我的响应:TStream;参数
var
  Response: TStream;

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