What steps will reproduce the problem?
This happens for some responses
Stack trace:
TypeError: Error #1086: The name method only works on lists containing one item.
at XMLList/http://adobe.com/AS3/2006/builtin::name()
at com.ak33m.rpc.xmlrpc::XMLRPCSerializer$/decodeObject()[/media/HUGE/WORK/InfusionSoft_AIR/as3-rpc-src/as3-rpclib-read-only/src/com/ak33m/rpc/xmlrpc/XMLRPCSerializer.as:198]
at com.ak33m.rpc.xmlrpc::XMLRPCSerializer$/decodeObject()[/media/HUGE/WORK/InfusionSoft_AIR/as3-rpc-src/as3-rpclib-read-only/src/com/ak33m/rpc/xmlrpc/XMLRPCSerializer.as:258]
at com.ak33m.rpc.xmlrpc::XMLRPCSerializer$/decodeObject()[/media/HUGE/WORK/InfusionSoft_AIR/as3-rpc-src/as3-rpclib-read-only/src/com/ak33m/rpc/xmlrpc/XMLRPCSerializer.as:249]
at com.ak33m.rpc.xmlrpc::XMLRPCSerializer$/deserialize()[/media/HUGE/WORK/InfusionSoft_AIR/as3-rpc-src/as3-rpclib-read-only/src/com/ak33m/rpc/xmlrpc/XMLRPCSerializer.as:180]
at mx.rpc.http::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::processResult()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\http\AbstractOperation.as:998]
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:313]
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()
I added the check with "" in the begining, this check is also placed in other
parts of other methods but somehow this happened to me(get this kind of empty
object)
Also I refactored to use a switch
this is in file XMLRPCSerializer.as
protected static function decodeObject (robject:*):*
{
if(robject.toString()=="")
return "";
var name:String;
name = new String(robject.children().name() );
switch(name){
case TYPE_STRING:
{
return String(robject.string);
}
case TYPE_INT:
{
return new int(robject.int);
}
case TYPE_I4:
{
return new int (robject.i4);
}
case TYPE_BOOLEAN:
{
if (isNaN(robject.boolean))
{
if (String(robject.boolean).toLowerCase() == "true")
return true;
else if (String(robject.boolean).toLowerCase() == "false")
return false;
else
return null;
}
else
{
return Boolean(Number(robject.boolean));
}
}
case TYPE_DATE:
{
var tdatestring:String = robject.children();
var datepattern:RegExp = /^(-?\d\d\d\d)-?(\d\d)-?(\d\d)T(\d\d):(\d\d):(\d\d)/;
var d:Array = tdatestring.match(datepattern);
var tdate:Date = new Date(d[1],d[2]-1,d[3],d[4],d[5],d[6]);
return tdate;
}
case TYPE_BASE64:
{
var base64decoder:Base64Decoder = new Base64Decoder();
base64decoder.decode(robject.base64);
return base64decoder.flush();
}
case TYPE_ARRAY:
{
var tarray:Array = new Array();
for each (var value:* in robject.array.data.value)
{
tarray.push(decodeObject(value));
}
return tarray;
}
case TYPE_STRUCT:
{
var tvalue:Object = new Object();
for each (var member:* in robject.struct.member)
{
tvalue[member.name] = decodeObject(member.value);
}
return tvalue;
}
case TYPE_DOUBLE:
{
return Number(robject.double);
}
default:
{
return String(robject);
}
}
}
Original issue reported on code.google.com by simion...@gmail.com on 7 Feb 2012 at 2:06
Original issue reported on code.google.com by
simion...@gmail.com
on 7 Feb 2012 at 2:06