【发布时间】:2008-11-19 14:17:22
【问题描述】:
受What’s the simplest way to call Http GET url using Delphi?这个问题的启发 我真的很想看看如何使用 POST 的示例。最好从调用中接收 XML。
补充:在帖子数据中包含图像或其他文件怎么样?
【问题讨论】:
受What’s the simplest way to call Http GET url using Delphi?这个问题的启发 我真的很想看看如何使用 POST 的示例。最好从调用中接收 XML。
补充:在帖子数据中包含图像或其他文件怎么样?
【问题讨论】:
使用印地。将您的参数放入 StringList (name=value) 并使用 URL 和 StringList 调用 Post。
function PostExample: string;
var
lHTTP: TIdHTTP;
lParamList: TStringList;
begin
lParamList := TStringList.Create;
lParamList.Add('id=1');
lHTTP := TIdHTTP.Create;
try
Result := lHTTP.Post('http://blahblahblah...', lParamList);
finally
lHTTP.Free;
lParamList.Free;
end;
end;
【讨论】:
lParamList 中的参数是否与对 delphi http 服务器的请求的未解析参数相同(我正在尝试向已创建的 delphi http 服务器发送 post 请求)
这是一个使用 Indy 将 JPEG 文件发布到运行 Gallery 的网络服务器的示例
我有更多这类东西的例子(我在 Delphi 中为 Gallery 项目编写的屏幕保护程序中使用了它们,可用 here,或在 Gallery 网站 here 上获得更多信息)。
我认为重要的一点是 JPEG 作为流传入。
procedure AddImage(const AlbumID: Integer; const Image: TStream; const ImageFilename, Caption, Description, Summary: String);
var
Response: String;
HTTPClient: TidHTTP;
ImageStream: TIdMultipartFormDataStream;
begin
HTTPClient := TidHTTP.Create;
try
ImageStream := TIdMultiPartFormDataStream.Create;
try
ImageStream.AddFormField('g2_form[cmd]', 'add-item');
ImageStream.AddFormField('g2_form[set_albumId]', Format('%d', [AlbumID]));
ImageStream.AddFormField('g2_form[caption]', Caption);
ImageStream.AddFormField('g2_form[force_filename]', ImageFilename);
ImageStream.AddFormField('g2_form[extrafield.Summary]', Summary);
ImageStream.AddFormField('g2_form[extrafield.Description]', Description);
ImageStream.AddObject('g2_userfile', 'image/jpeg', Image, ImageFilename);
Response := HTTPClient.Post('http://mygallery.com/main.php?g2_controller=remote:GalleryRemote', ImageStream);
finally
ImageStream.Free;
end;
finally
HTTPClient.Free;
end;
end;
【讨论】:
再次,Synapse TCP/IP library 进行救援。使用 HTTPSEND 例程 HTTPPostURL。
function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
您的 URL 也将是要发布的资源,URLDATA 将是表单数据,您的 XML 结果将作为数据流返回。
【讨论】: