Flex读取webService的XML报错问题求助
flex客户端:
[Bindable]
private var service:HTTPService;
//查询函数
internal function iniApp():void{
System.useCodePage = true;
service = new HTTPService();
var cphm:String =tb_cpqy.text+bt_qyhm.text+cp_number.text;
service.url="http://127.0.0.2/webserver.php?cphm="+cphm;
service.method="POST";
service.addEventListener("result",resultHandler);
service.send();
CursorManager.setBusyCursor();
System.useCodePage == true;
}
internal function resultHandler(evt:ResultEvent):void{
CursorManager.removeBusyCursor();
System.useCodePage == true;
var carList:XMLList = new XMLList();
var xmListCollection:XMLListCollection = new XMLListCollection();
var provider:ArrayCollection;
var carXml:XML = evt.result.carinfos;
carList = carXml.elements("carinfo");
xmListCollection.source = carList;
DataGrid_wfinfo.dataProvider = xmListCollection;
}
请求到的webService结构:
<?xml version="1.0" encoding="GBK"?>
<carinfos>
<carinfo>
<wftype>07</wftype>
<wfdate>2011-7-21 10:57</wfdate>
<cphm>云LAD633</cphm>
<wfdm>1603</wfdm>
<wfdl>祥宁线42公里650米处</wfdl>
<cldw>53292400</cldw>
</carinfo>
</carinfos>
---------------------------------
遇到如下问题:
当返回多条XML记录的时候程序是正常的。
当返回1条或记录的时候程序报错,报错信息如下:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at jjquer2/resultHandler()[D:\jjquer2\src\jjquer2.mxml:321]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\http\HTTPService.as:993]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:318]
at mx.rpc::Responder/result()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\Responder.as:56]
at mx.rpc::AsyncRequest/acknowledge()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:84]
at DirectHTTPMessageResponder/completeHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:451]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
求解决方法并说明问题,谢谢
[解决办法]
at jjquer2/resultHandler()[D:\jjquer2\src\jjquer2.mxml:321]
错误已经提示了,空指针异常,访问空对象的属性或者方法
[解决办法]
以前出现过这种错误。一条的话不能使用XMLList好像。自己多test下,很容易解决。
[解决办法]
- XML code
<?xml version="1.0" encoding="GBK"?><carinfos></carinfos>
[解决办法]
- XML code
var carXml:XML = evt.result;if(carXml.carinfos.hasComplexContent())//先检测是否有子项{ carList = carXml.carinfos.carinfo; xmListCollection.source = carList; DataGrid_wfinfo.dataProvider = xmListCollection;}
[解决办法]
carXml就表示carinfos,
——————————————————
<?xml version="1.0" encoding="GBK"?>
<carinfos>
  <carinfo>
  <wftype>07</wftype>
  <wfdate>2011-7-21 10:57</wfdate>
  <cphm>云LAD633</cphm>
  <wfdm>1603</wfdm>
  <wfdl>祥宁线42公里650米处</wfdl>
  <cldw>53292400</cldw>
  </carinfo>
</carinfos>
——————————————————————
对于wftype直接使用carXml.wftype取得
[解决办法]
carXml就表示carinfos,
——————————————————
<?xml version="1.0" encoding="GBK"?>
<carinfos>
  <carinfo>
  <wftype>07</wftype>
  <wfdate>2011-7-21 10:57</wfdate>
  <cphm>云LAD633</cphm>
  <wfdm>1603</wfdm>
  <wfdl>祥宁线42公里650米处</wfdl>
  <cldw>53292400</cldw>
  </carinfo>
</carinfos>
——————————————————————
对于wftype直接使用carXml.carinfo.wftype取得
[解决办法]
第一层的标签名是不用写明出来的
<?xml version="1.0" encoding="GBK"?>
<carinfos>
</carinfos>
这样的话,直接就返回XML对象吧
[解决办法]
webService返回的数据本来就是xml,可以直接用Arraycollection获取,为什么还要多此一举使用var carXml:XML 。
var arr:Arraycollection= event.result as Arraycollection;
[解决办法]
新手 挂起