2011-05-20 55 views
0

這個問題在很多地方都有討論,但沒有一個解決方案似乎適用於我。繼承人的事情:在我的mxml代碼中一切正常:如何使用ActionScript訪問Remoteobjects?

<s:RemoteObject id="remotetest" destination="Hibernatetest" endpoint="http://praiseJESUS/blazeds/messagebroker/amf" result="remotetest_resultHandler(event)" fault="remotetest_faultHandler(event)"/> 

<s:Button x="1248" y="401" label="Laden" click="remotetest.getCells()"/> 

protected function remotetest_resultHandler(event:ResultEvent):void 
{ 
    var cellList:ArrayCollection = event.result as ArrayCollection; 
} 

現在,這個作品完美。什麼不工作,另一方面是這樣的:

var ro:RemoteObject = new RemoteObject; 
var cs:ChannelSet = new ChannelSet; 
var c:Channel = new AMFChannel("my-amf","http://JESUSAGAIN/blazeds/messagebroker/amf"); 
cs.addChannel(c); 
ro.channelSet = cs; 
ro.destination = "MyClass"; 
ro.source = "myNamespace.MyClass"; 
ro.getOperation("myfunction()").send(); 

這應該工作 - 不知道爲什麼它不。任何提示?

+0

好的,我撥弄圍繞一個位:「cs.addEventListener( 「的ChannelConnect」,handlechannel);被保護的函數handlechannel(事件:ChannelEvent通道):無效{ \t \t \t \t如果(event.connected){textfeld.text = 「好極了」}; \t \t \t}給我看,通道不連接。不明白爲什麼。 – Kai

+0

如果您打開瀏覽器並鍵入http:// JESUSAGAIN/blazeds/messagebroker/amf您是否收到200 OK響應代碼? –

+0

輸入URL後,它不返回任何代碼。根本沒有錯誤代碼。爲什麼這很重要?正如我所說的,它可以在mxml語法中工作,例如blazeDS控制檯也可以工作。 – Kai

回答

1

在檢查RemoteObject的代碼,我發現下面的代碼片斷:

mx_internal function initEndpoint():void 
{ 
    if (endpoint != null) 
    { 
     var chan:Channel; 
     if (endpoint.indexOf("https") == 0) 
     { 
      chan = new SecureAMFChannel(null, endpoint); 
     } 
     else 
     { 
      chan = new AMFChannel(null, endpoint); 
     } 
     channelSet = new ChannelSet(); 
     channelSet.addChannel(chan); 
    } 
} 

這表明,如果端點被定義,所述的RemoteObject級將創建自己的ChannelSet的。儘管看起來這與我所做的一樣,但我不能這樣做,因爲下面的代碼實際上起作用,這與我的第一次嘗試不同。

var ro:RemoteObject = new RemoteObject("Hibernatetest"); 
      ro.endpoint = "http://Jesus/blazeds/messagebroker/amf"; 
      ro.myfunction(); 

它似乎必須非常小心,當一個人定義了channelset。也許有人可以在這個問題上給我啓發。