首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

可以鄙人面代码中调试,找出NativeXml.loadFromSteam返回为空的原因

2013-08-01 
可以在下面代码中调试,找出NativeXml.loadFromSteam返回为空的原因在下面代码中调试,找出NativeXml.loadFr

可以在下面代码中调试,找出NativeXml.loadFromSteam返回为空的原因
在下面代码中调试,找出NativeXml.loadFromSteam返回为空的原因?
在浏览器中的地址栏里输入Url(代码里有),是有xml返回的,所以排除了流为空的情况。


uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, IdHTTP;
////根据URl,发送Http get请求,得到NativeXml的对象用函数(访问拍拍店铺的订单xml)
procedure TForm1.Button1Click(Sender: TObject);
var IdHTTP1 :TIdHTTP; RtnStream :TMemoryStream; url :string; XmlDoc :TNativeXml;
begin
   url :='http://api.paipai.com/deal/sellerSearchDealList.xhtml?accessToken=fc3b8228216463071bc3099c5883f3e4&appOAuthID'
           +'=700134922&charset=utf-8&dealState=DS_WAIT_SELLER_DELIVERY&format=xml&pageIndex=1&pageSize=10&randomValue=11229'
           +'&sellerUin=25594165&timeStamp=1374226526&uin=25594165&sign=%2FQttjMDhCFaufpB03uAUAcPLR%2F4%3D';

   XmlDoc :=TNativeXml.Create(self);
   IdHTTP1 :=Tidhttp.Create(nil);

   try
      with IdHTTP1 do begin
         Request.Accept            :='text/html, */*';
         Request.ContentLength     :=0;
         Request.ContentRangeEnd   :=0;
         Request.ContentRangeStart :=0;
         Request.UserAgent         :='Mozilla/3.0 (compatible; Indy Library)';
     end;

     try
        RtnStream :=TMemoryStream.Create;
        IdHTTP1.get(url, RtnStream);

        XmlDoc.LoadFromStream(RtnStream);
        XmlDoc.SaveToFile('test.xml'); //输出文件为空,而浏览器地址中输入url,有返回     except
        on E: Exception do begin
        end;
     end;
   finally
     idhttp1.Free; RtnStream.free;
   end;
end;


在浏览器中的地址栏里输入Url,是有xml返回的
  <?xml version="1.0" encoding="utf-8" ?> 


- <sellerSearchDealList>
  <errorCode>0</errorCode> 
  <errorMessage /> 
  <pageIndex>1</pageIndex> 
  <pageTotal>0</pageTotal> 
  <countTotal>0</countTotal> 
  <dealList /> 
  </sellerSearchDealList>
[解决办法]

引用:
上面代码换成TXMLDocument就可以处理。
我怀疑NativeXML读取流支持的不好。

因为频繁使用读取xml数据,我担心TXMLDocument内存释放不好,
才想改为NativeXML,
结果NativeXML支持流处理,这么差。
试试用TNativeXML.LoadFromURL()

热点排行