Delphi 如何使用http post上传文件?德尔福2009
我的目标是通过HTTP post上传一个文本文件,我正在使用Delphi2009 比如说下面的URL 我知道这可以通过使用TIdHttp组件来完成。下面的电话呢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
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;