从Internet生成xml到delphi应用程序

Gem*_*Gem 0 xml delphi indy delphi-xe6

我在Delphi XE6中工作,需要下载php脚本在服务器上生成的xml数据.我确实试过Indy IdHTTP.Get但它没有下载任何东西......当我尝试在浏览器或TWebBrowser中打开相同的链接时它显示生成的xml数据,但是当我尝试用IdHTTP Get直接拉它时,没有下载任何内容,就像没有生成数据一样......

Memo1.Lines.Add := idHTTP.Get(url);
Run Code Online (Sandbox Code Playgroud)

提供空的memo1.

任何提示或示例如何首先在某些服务器上执行php脚本,这将生成数据,并下拉该结果?

Pas*_*lla 5

你可以这样做:

procedure TForm1.Button1Click(Sender: TObject);
var
   dow: TIdHTTP;
   xmlDoc: TXMLDocument;
   xmlStrem: TMemoryStream;
begin
   dow := nil;
   xmlDoc := nil;
   xmlStrem := nil;
   try
      try
         dow := TIdHTTP.Create(Self);
         dow.HandleRedirects := True;
         xmlStrem := TMemoryStream.Create();
         dow.Get('http://url.com/path/', xmlStrem);
         xmlDoc := TXMLDocument.Create(Self);
         xmlDoc.LoadFromStream(xmlStrem);
         ShowMessage(xmlDoc.XML.Text);
      except
         on E: Exception do
         begin
            raise;
         end;
      end;
   finally
      if Assigned(dow) then FreeAndNil(dow);
      if Assigned(xmlDoc) then FreeAndNil(xmlDoc);
      if Assigned(xmlStrem) then FreeAndNil(xmlStrem);
   end;
end;
Run Code Online (Sandbox Code Playgroud)

  • 不要使用`TStringStream`,特别是在Delphi 2009+中.它在构造函数中需要`TEncoding`,如果指定的编码与XML编码不匹配,则可能会丢失数据.请改用"TMemoryStream". (2认同)