[Gambas-user] XMLRpc maybe a Bug

Benoît Minisini gambas at ...1...
Wed Mar 4 16:34:06 CET 2009


> Peter Lang wrote:
> > Hi,
> >
> > After investigating the Source of xmlrpc i thought i know how to use
> > it... Everything work so far, but the last Step does not work.
> > The line: myStruc.Value(a) has to return the result, but instead of
> > giving back an int  i get an RpcStruct again and again.
> >
> > The sample does not much useful, but when it ends it throws the following
> > Errors to the Console:
> > WARNING: circular references detected
> > RpcStruct (1)
> > WARNING: 9 allocation(s) non freed.
> >
> > Is there any additional Documentation i missed?
> >
> >
> > PUBLIC SUB Main()
> >
> >   DIM RpcF AS RpcFunction
> >   DIM myStruc AS RpcStruct
> >   DIM client AS RpcClient
> >   DIM hVar AS NEW Variant[]
> >   DIM ret AS Variant
> >   DIM a AS Integer
> >   DIM name AS String
> >   DIM dType AS Integer
> >
> >   a = 0
> >
> >   RpcF = NEW RpcFunction("sample.sumAndDifference", [XmlRpc.xInteger,
> > XmlRpc.xInteger], XmlRpc.xStruct)
> >   client = NEW RpcClient(RpcF)
> >   client.URL = "http://xmlrpc-c.sourceforge.net/api/sample.php"
> >   hVar.Add(5)
> >   hVar.Add(3)
> >
> >   myStruc = client.Call(hVar)
> >   DO WHILE a < myStruc.Count
> >     name = myStruc.Key(a)
> >     dType = myStruc.dataType(a)
> >     ret = myStruc.Value(a)
> >     INC a
> >   LOOP
> >
> > END
>
> Peter and all,
>
> I think I may have found the problem, it looks like a bug in the
> gb.xml.rpc component.
> BUT i'm not a xml guru nor a gambas component wizard, so it could be a
> bogus fix, and break things.
>
> Anyway with this change your example code works without errors and
> returns the correct values as well ;-)
> I have added some debug statements to your code to prove this, see below.
>
> Just change line 194 in "gambas/2.0/gb.xml/src/rpc/gb.xml.rpc/Tools.module"
> from:
> hAtom.Data.Add(Name, hAtom.Data, hAtom.Type)
> to:
> hAtom.Data.Add(Name, bAtom.Data, bAtom.Type)
>
> It looks like two typos to me...
>
> Then type sudo make install from dir "gambas/2.0/gb.xml/src/" to install
> it.
>
> Run code:
> ---
> ' Gambas module file
> PUBLIC SUB Main()
>
> DIM RpcF AS RpcFunction
> DIM myStruc AS RpcStruct
> DIM client AS RpcClient
> DIM hVar AS NEW Variant[]
> DIM ret AS Variant
> DIM a AS Integer
> DIM name AS String
> DIM dType AS Integer
>
> a = 0
>
> RpcF = NEW RpcFunction("sample.sumAndDifference", [XmlRpc.xInteger,
> XmlRpc.xInteger], XmlRpc.xStruct)
> client = NEW RpcClient(RpcF)
> client.URL = "http://xmlrpc-c.sourceforge.net/api/sample.php"
> hVar.Add(5)
> hVar.Add(3)
>
> myStruc = client.Call(hVar)
> DO WHILE a < myStruc.Count
> name = myStruc.Key(a)
> dType = myStruc.dataType(a)
> ret = myStruc.Value(a)
>
> DEBUG "Name = " & name
> DEBUG "Type = " & dType
> DEBUG "Value = " & ret
>
> INC a
> LOOP
>
> END
>
> It returns:
>
> MMain.Main.28: Name = sum
> MMain.Main.29: Type = 0
> MMain.Main.30: Value = 8
> MMain.Main.28: Name = difference
> MMain.Main.29: Type = 0
> MMain.Main.30: Value = 2
>
> ;-)
>
> Regards,
> Ron_2nd.
>

Thanks for the patch. I will put it in the next commit.

Regards,


-- 
Benoît





More information about the User mailing list