繁体   English   中英

无法理解Flex中的异常?

[英]Can't understand the exception in Flex?

我正在尝试Learn.adobe.com网站上提供的flickr代码,但遇到了以下异常:

[RPC Fault faultString="Error #1090: XML parser failure: element is malformed." faultCode="Client.CouldNotDecode" faultDetail="null"]
    at mx.rpc.http::HTTPService/http://www.adobe.com/2006/flex/mx/internal::processResult()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\http\HTTPService.as:851]
    at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:188]
    at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43]
    at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
    at DirectHTTPMessageResponder/completeHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:403]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()

我不明白这个例外。 谁能帮我这个?
这是我输入的代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
        backgroundGradientColors="[0xFFFFFF,0xAAAAAA]" horizontalAlign="left" 
        horizontalGap="15" verticalGap="15" width="459" height="371">
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.rpc.events.ResultEvent;

            [Bindable]
            public var photoBindable:ArrayCollection;
            private function requestPhotos():void{
                photoService.cancel();
                var params:Object=new Object();
                params.format = 'rss_200_enc';
                params.tags = searchTerm.text;
                photoService.send(params);
            }
            private function photoHandler(event:ResultEvent):void{
                photoBindable=event.result.rss.channel.items as ArrayCollection;
            }
        ]]>
    </mx:Script>
    <mx:HTTPService id="photoService"
        url="http://api.flickr.com/services/feeds/photos_public.gne"
        result="photoHandler(event)" />
    <mx:HBox>
        <mx:Label text="Flicker tags" />
        <mx:TextInput id="searchTerm" />
        <mx:Button label="Search" click="requestPhotos()"/>
    </mx:HBox>
    <mx:TileList width="100%" height="100%"
        dataProvider="{photoBindable}"
        itemRenderer="thumbnail">
    </mx:TileList>
</mx:Application>

这是itemRender thumbnail.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="75" height="75"
        horizontalScrollPolicy="off" verticalScrollPolicy="off"
        paddingBottom="5" paddingLeft="5" paddingTop="5">
    <mx:Image width="75" height="75" source="{data.thumbnail.url}" />
    <mx:Text text="{data.credits}" />
</mx:VBox>

当然,XML或.php文件中存在错误,可能是空格或其他错误; 检查仅以以下语句开头的xml的第一行:

<?xml version="1.0" encoding="utf-8"?>

我很确定您忘了导入itemRender:

<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.rpc.events.ResultEvent;
        import itemRender; //substitute itemRender with your own itemRender.mxml file
    ]]>
</mx:Script>

无论如何,即使是意大利语,也很容易看一下该页面

希望有用

我认为问题出在此标签event.result.rss.channel.items,这不是项目 ,而是项目。删除多余的“ s” .....示例很好...对我有用...您可以使用下面的代码来检查

在这里打印我的代码...我在其中添加了更多内容

FlickrPrj.mxml

    <mx:Script>
        <![CDATA[
            import mx.events.ListEvent;
            import mx.controls.Alert;
            import mx.managers.PopUpManager;
            import mx.rpc.events.ResultEvent;
            import mx.collections.ArrayCollection;

           [Bindable]
           public var photoFeed:ArrayCollection;

            public function searchFlickr():void {
                photoService.cancel();
                var params:Object = new Object();
                    params.format = 'rss_200_enc';
                    params.tags = srchTxtId.text;               
                photoService.send(params);
            }

            public function resultHandler(event:ResultEvent):void {
                photoFeed = event.result.rss.channel.item as ArrayCollection;
            }

            public function openPanel(levent:ListEvent):void {
                var panelCmpObj:panelcomp = new panelcomp();    
                   panelCmpObj.source = levent.itemRenderer.data.content.url;           
                PopUpManager.addPopUp(panelCmpObj,this,true);
            }
            public function test():void {
                Alert.show('testtest');
                }           

        ]]>
    </mx:Script>

    <mx:HTTPService id="photoService" url="http://api.flickr.com/services/feeds/photos_public.gne" result="resultHandler(event)"/>

    <mx:HBox width="362" height="24">
        <mx:TextInput id="srchTxtId"/>
        <mx:Button label="Search for pics" id="srchBtnId" click="searchFlickr()"/>
    </mx:HBox>
    <mx:TileList id="imgTileList" dataProvider="{photoFeed}" width="100%" height="100%" itemClick="openPanel(event)">   
    <mx:itemRenderer>
        <mx:Component>
          <mx:VBox width="125" height="125"
                paddingBottom="5"
                paddingLeft="5"
                paddingTop="5"
                paddingRight="5">
                <mx:Image width="75" height="75" source="{data.thumbnail.url}"/>
          </mx:VBox>
        </mx:Component>
    </mx:itemRenderer>
    </mx:TileList>

</mx:Application>

panelcomp.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
        showCloseButton="true"
        styleName="noPadding"
        creationComplete="init();"
        close="titleWindow_close(event);">
<mx:Script>
        <![CDATA[
            import mx.managers.IFocusManagerComponent;
            import mx.controls.Alert;
            import mx.core.IFlexDisplayObject;
            import mx.events.CloseEvent;
            import mx.managers.PopUpManager;

            [Bindable]
            public var source:String;

            private function init():void {
                PopUpManager.centerPopUp(this);
            }

            private function titleWindow_close(evt:CloseEvent):void {
                PopUpManager.removePopUp(evt.target as IFlexDisplayObject);
            }
        ]]>
    </mx:Script>

    <mx:Image width="379" height="261" id="imgId" source="{source}"/>
       <mx:ControlBar horizontalAlign="right" width="100%">
    </mx:ControlBar>

</mx:TitleWindow>

注意将FlickPrj.mxml和panelcomp.mxml放在同一目录中。

这意味着已加载的xml文件未正确编写,请尝试在IE(或某些xml工具,例如altova)中打开它,然后查看出现了什么问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM