The error given by the Money Server is:

Money # 04:57:46 - [MONEY RPC]: handleCancelTransfer: Exception occurred when 
transaction 94786877-9ed6-4d36-98d7-9a88f7b52acf: 
System.NullReferenceException: Object reference not set to an instance of an 
object
  at OpenSim.Grid.MoneyServer.MoneyXmlRpcModule.handleCancelTransfer 
(Nwc.XmlRpc.XmlRpcRequest request, System.Net.IPEndPoint remoteClient) 
[0x00000] in <filename unknown>:0

This is because it’s attempting to dereference a string (if I do 
UUID.Random().ToString()) or an empty value.

DSL


> On 29 Nov 2014, at 9:30 am, David Lloyd <lloy0...@adam.com.au> wrote:
> 
> 
> Hi There,
> 
> TL;DR I can’t get NWC-RPC to encode .NET object such as OpenMetaverse’s UUID 
> or System.Net.IEndpoint - anyone know how to do this?
> 
> I am trying to get the NWC-RPC .NET module to communicate with my money 
> server. The money server registers XML RPC calls with the grid like this:
> 
> m_httpServer.AddXmlRPCHandler("CancelTransfer", handleCancelTransfer)
> 
> The handleCanceTransfer’s signature looks like this:
> 
>  public XmlRpcResponse handleCancelTransfer(XmlRpcRequest request, IPEndPoint 
> remoteClient)
> 
> My code looks like this (and it’s a copy/paste with a few tweaks from here):
> 
> using System;
> using System.Collections;
> using System.Collections.Generic;
> using System.Net;
> using Nwc.XmlRpc;
> using OpenMetaverse;
> namespace Call_With_NWC
> {
>     class MainClass
>     {
>         public static void Main(string[] args)
>         {
>             System.Net.ServicePointManager.CertificatePolicy = new 
> ITrustAllCertificates();
>             Hashtable ht = new Hashtable();
>             ht["remoteClient"] = new 
> IPEndPoint(IPAddress.Parse("192.168.0.1"), 80);
>             ht["secureCode"] = "code";
>             ht["transactionID"] = UUID.Random(); // UUID Line
>             Console.WriteLine("New GUID: " + ht["transactionID"]);
>             List<Hashtable> parameters = new List<Hashtable> { ht };
>             XmlRpcRequest request = new XmlRpcRequest("CancelTransaction", 
> parameters);
>             Hashtable response;
>             try {
> //                response = 
> (Hashtable)request.Invoke("https://192.168.0.164:8008";);
>                 response = 
> (Hashtable)request.Invoke("http://192.168.0.1:9000";);
>                 Console.WriteLine("It seems to have worked...");
>                 foreach (var key in response.Keys)
>                 {
>                     Console.WriteLine("Key: " + key + " => " + response[key]);
>                 }
>             } catch (Exception ex) {
>                 Console.WriteLine("Got an exception:\n" + ex.ToString());
>             }
>         }
>     }
> }
> 
> The money server consistently complains that the secureCode and UUID are 
> empty - when in fact…they are…because I wrote up a little “Dump the request” 
> server and get:
> 
> Message of length 348 was defined but not a blessed scalar.
> <?xml version="1.0" encoding="utf-8"?>
> <methodCall>
>       <methodName>
>               CancelTransaction
>       </methodName>
>       <params>
>               <param>
>                       <value>
>                               <struct>
>                                       <member>
>                                               <name>
>                                                       transactionID
>                                               </name>
>                                               <value/>
>                                       </member>
>                                       <member>
>                                               <name>
>                                                       remoteClient
>                                               </name>
>                                               <value/>
>                                       </member>
>                                       <member>
>                                               <name>
>                                                       secureCode
>                                               </name>
>                                               <value>
>                                                       <string>
>                                                               code
>                                                       </string>
>                                               </value>
>                                       </member>
>                               </struct>
>                       </value>
>               </param>
>       </params>
> </methodCall>
> 
> In fact, the NWC-XML-RPC is behaving as though it doesn’t know how to encode 
> anything but plain strings. The transactionID should be the type 
> OpenMetavers.UUID (which seems to be a wrapper around GUUID) and remoteClient 
> should be an IEndPoint from System.Net <http://system.net/>.
> 
> Obviously I’m missing something but I’m not sure what.
> 
> How does one encode OpenMetaverse and other .NET objects so that the XML-RPC 
> client on the other end is able to decode them?
> 
> DSL
> _______________________________________________
> Opensim-users mailing list
> Opensim-users@opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-users

_______________________________________________
Opensim-users mailing list
Opensim-users@opensimulator.org
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-users

Reply via email to