受问题的启发使用Delphi调用Http GET url的最简单方法是什么? 我真的很想看到如何使用POST的示例.优选地,从呼叫接收XML.
补充:如何在发布数据中包含图像或其他文件?
使用Indy.将您的参数放在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;
以下是使用Indy将JPEG发布到运行Gallery的Web服务器的示例
我有这种东西(我在一个屏幕保护我在Delphi写可用的库项目中使用它们的更多的例子在这里的画廊网站,或更多的信息在这里).
我认为重要的一点是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中的流返回.