I’m trying to call AMFPHP two times on a single ActionScript method and what happen is that only the first call succeed. The second one doesn’t return an error, doesn’t alerts anything, it is more likely that it doesn’t even happens and I’m not sure why.
Here is an example:
public function editSomething():void{
if(dgChild.selectedIndex == -1){
Alert.show("You need to select a register in order to edit it.");
return;
}
_parent1.getParentByChild(dgChild.selectedItem.id);
_parent2.getParent2ByChild(dgChild.selectedItem.id);
}
When this method is called, the first parent is called normally, but the second one isn’t.
The variables _parent1 and _parent2 are Objects that communicates with PHP and holds the result:
public class parentDAO{
//Service or Class that this objectDAO will be communicating with.
private const _phpController:String = "parentController/";
private var _AMFPHP:AMFPHP = AMFPHP.getInstance();
//ArrayCollection that will be filled with data comming from PHP/Database.
[Bindable] private var _dataProviderAeronave:ArrayCollection;
//I use public getter and setter for this dataProvider
public function getParentByChild(child_id:int):void{
_AMFPHP.GATEWAY.call(_phpController + "getParentByChild", new Responder(resultGetParent), child_id);
}
private function resultGetParent(result:Array):void{
dataProviderParent = new ArrayCollection(result);
}
}
Now, assuming that the variable _parent1 is one object declared above and the _parent2 is another object of an another class very very similarly as this one and assuming that both communication works perfectly fine, the problem arise now: when I call both in one single ActionScript method. If I call just one of them, it will work normally, but when I call two services, the second is never actually called. I’m sure about it because I can see it through Service Capture Proxy.
Any ideas?
What happens is that every time that the NetConnection class makes a call to AMFPHP, it automatically closes the connection with the path. So, basically the next call is ignored and I have no idea why it doesn’t show up in the Flash Debugger.
My solution was to always check if the Gateway is connected through the “connected” [read-only] attribute in the NetConnection class. if it is false, I force a new connection and voalá, the script works perfectly fine.