受到问题“使用Delphi调用Http GET URL的最简单方法是什么?”的启发,我真的很想看到如何使用POST的示例。最好能够通过调用接收XML。
补充: 在发布数据中包含图像或其他文件怎么样?
受到问题“使用Delphi调用Http GET URL的最简单方法是什么?”的启发,我真的很想看到如何使用POST的示例。最好能够通过调用接收XML。
补充: 在发布数据中包含图像或其他文件怎么样?
使用Indy。将您的参数放入StringList中(名称=值),然后只需使用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;
以下是使用Indy将JPEG发送到运行Gallery的网络服务器的示例。
我还有更多类似的例子(我在为Gallery项目编写的Delphi屏幕保护程序中使用它们,可以在这里找到),或者在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库来拯救您。使用HTTPSEND例程HTTPPostURL。
function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
您的URL将是要发布的资源,URLDATA将是表单数据,XML结果将作为DATA中的流返回。
lParamList
参数是否与未解析的请求参数相同,用于发送 POST 请求到已创建的 Delphi HTTP 服务器? - bob_saginowski