Exemplo n.º 1
0
        public void ZeroLengthMethodName()
        {
            string xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName></methodName> 
<params>
  <param>
    <value>test string</value>
  </param>
</params>
</methodCall>";
            var    sr         = new StringReader(xml);
            var    serializer = new XmlRpcSerializer();

            Assert.Throws <XmlRpcInvalidXmlRpcException>(() => serializer.DeserializeRequest(sr, null));
        }
Exemplo n.º 2
0
        public static object Parse(
            XmlDocument xdoc,
            Type valueType,
            MappingAction action,
            out Type parsedType,
            out Type parsedArrayType)
        {
            var node = SelectValueNode(xdoc.SelectSingleNode("value"));
            var parseStack
                = new XmlRpcSerializer.ParseStack("request");
            var ser = new XmlRpcSerializer();
            var obj = ser.ParseValue(node, valueType, parseStack, action,
                                     out parsedType, out parsedArrayType);

            return(obj);
        }
Exemplo n.º 3
0
        public static object Parse(
            string xml,
            Type valueType,
            MappingAction action,
            XmlRpcSerializer serializer,
            out Type parsedType,
            out Type parsedArrayType)
        {
            var sr   = new StringReader(xml);
            var xdoc = new XmlDocument();

            xdoc.PreserveWhitespace = true;
            xdoc.Load(sr);
            return(Parse(xdoc, valueType, action, serializer,
                         out parsedType, out parsedArrayType));
        }
        public void VoidReturnType()
        {
            var xml        = @"<?xml version=""1.0"" ?> 
<methodResponse>
  <params>
    <param>
      <value></value>
    </param>
  </params>
</methodResponse>";
            var sr         = new StringReader(xml);
            var serializer = new XmlRpcSerializer();
            var response   = serializer.DeserializeResponse(sr, typeof(void));

            Assert.IsTrue(response.retVal == null, "retval is null");
        }
Exemplo n.º 5
0
        public void TwoLeadingSpace()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall><methodName>rtx.EchoString</methodName>
<params>
<param><value>  ddd</value></param>
</params></methodCall>";

            StringReader     sr         = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest    request    = serializer.DeserializeRequest(sr, GetType());

            Assert.AreEqual(request.args[0].GetType(), typeof(string),
                            "argument is string");
            Assert.AreEqual("  ddd", request.args[0]);
        }
Exemplo n.º 6
0
        public void ISO_8869_1()
        {
            var dllPath = System.Reflection.Assembly.GetExecutingAssembly().Location;

            using (var stm = File.Open(Path.Combine(Path.GetDirectoryName(dllPath), "iso-8859-1_response.xml"),
                                       FileMode.Open, FileAccess.Read))
            {
                var serializer = new XmlRpcSerializer();
                var response
                    = serializer.DeserializeResponse(stm, typeof(string));
                var ret = (string)response.retVal;
                var nnn = ret.Length;
                Assert.IsTrue(ret == "hæ hvað segirðu þá",
                              "retVal is 'hæ hvað segirðu þá'");
            }
        }
Exemplo n.º 7
0
        public void NegativeOverflowI8()
        {
            string xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>TestInt</methodName> 
<params>
  <param>
    <value><i8>-9999999999999999999999999999999999999999999</i8></value>
  </param>
</params>
</methodCall>";
            var    sr         = new StringReader(xml);
            var    serializer = new XmlRpcSerializer();

            Assert.Throws <XmlRpcInvalidXmlRpcException>(() => serializer.DeserializeRequest(sr, null));
        }
Exemplo n.º 8
0
        public void ArrayInStruct()
        {
            // reproduce problem reported by Alexander Agustsson
            var xml = @"<?xml version=""1.0"" encoding=""ISO-8859-1""?> 
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>key3</name>
            <value>
              <array>
                <data>
                  <value>New Milk</value>
                  <value>Old Milk</value>
                </data>
              </array>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>";

            var sr         = new StringReader(xml);
            var serializer = new XmlRpcSerializer();
            var response   = serializer.DeserializeResponse(sr, null);

            var o = response.retVal;

            Assert.IsTrue(o is XmlRpcStruct, "retval is XmlRpcStruct");
            var xrs = (XmlRpcStruct)o;

            Assert.IsTrue(xrs.Count == 1, "retval contains one entry");
            var elem = xrs["key3"];

            Assert.IsTrue(elem != null, "element has correct key");
            Assert.IsTrue(elem is Array, "element is an array");
            var array = (object[])elem;

            Assert.IsTrue(array.Length == 2, "array has 2 members");
            Assert.IsTrue(array[0] is string && (string)array[0] == "New Milk" &&
                          array[1] is string && (string)array[1] == "Old Milk",
                          "values of array members");
        }
        public void SingleSpaceString()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall><methodName>rtx.EchoString</methodName>
<params>
<param><value> </value></param>
</params></methodCall>";

            var           sr         = new StringReader(xml);
            var           serializer = new XmlRpcSerializer();
            XmlRpcRequest request    = serializer.DeserializeRequest(sr, GetType());

            Assert.AreEqual(request.args[0].GetType(), typeof(string),
                            "argument is string");
            Assert.AreEqual(" ", request.args[0],
                            "argument is string containing single space");
        }
Exemplo n.º 10
0
        public void MissingParams()
        {
            try
            {
                string           xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
  <methodName>TestString</methodName> 
</methodCall>";
                StringReader     sr         = new StringReader(xml);
                XmlRpcSerializer serializer = new XmlRpcSerializer();
                XmlRpcRequest    request    = serializer.DeserializeRequest(sr, null);
            }
            catch (Exception ex)
            {
                string s = ex.Message;
            }
        }
Exemplo n.º 11
0
        public void Gabe()
        {
            string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?><methodResponse><params><param><value><struct><member><name>response</name><value><struct><member><name>result</name><value><array><data><value><struct><member><name>state</name><value><string>CO</string></value></member><member><name>latitude</name><value><double>39.74147878</double></value></member><member><name>add1</name><value><string>110 16th St.</string></value></member><member><name>add2</name><value><string /></value></member><member><name>image_map</name><value><array><data><value><string>rect</string></value><value><int>290</int></value><value><int>190</int></value><value><int>309</int></value><value><int>209</int></value></data></array></value></member><member><name>city</name><value><string>Denver</string></value></member><member><name>fax</name><value><string>303-623-1111</string></value></member><member><name>name</name><value><boolean>0"
                         + "</boolean></value></member><member><name>longitude</name><value><double>-104.9874159</double></value></member><member><name>georesult</name><value><string>10 W2GIADDRESS</string></value></member><member><name>zip</name><value><string>80202</string></value></member><member><name>hours</name><value><string>Mon-Sun 10am-6pm</string></value></member><member><name>dealerid</name><value><string>545</string></value></member><member><name>phone</name><value><string>303-623-5050</string></value></member></struct></value></data></array></value></member><member><name>map_id</name><value><string>a5955239d080dfbb7002fd063aa7b47e0d</string></value></member><member><name>map</name><value><struct><member><name>zoom_level</name><value><int>3</int></value></member><member><name>image_type</name><value><string>image/png</string></value></member><member><name>miles</name><value><double>1.75181004463519</double></value></member><member><name>kilometers</name><value><double>2.81926498447338"
                         + "</double></value></member><member><name>scalebar</name><value><int>1</int></value></member><member><name>content</name><value><string>http://mapserv.where2getit.net/maptools/mapserv.cgi/a5955239d080dfbb7002fd063aa7b47e0d.png</string></value></member><member><name>scale</name><value><int>26000</int></value></member><member><name>map_style</name><value><string>default</string></value></member><member><name>size</name><value><array><data><value><int>600</int></value><value><int>400</int></value></data></array></value></member><member><name>content_type</name><value><string>text/uri-list</string></value></member><member><name>buffer</name><value><double>0.01</double></value></member><member><name>center</name><value><struct><member><name>georesult</name><value><string>AUTOBBOX</string></value></member><member><name>latitude</name><value><double>39.74147878</double></value></member><member><name>longitude</name><value><double>-104.9874159</double></value></member></struct></value></member></struct></value></member><member><name>result_count</name><value><int>1</int></value></member><member><name>image_map</name><value><boolean>1</boolean></value></member><member><name>result_total_count</name><value><int>1</int></value></member></struct></value></member><member><name>times</name><value><struct><member><name>csys</name><value><int>0</int></value></member><member><name>cusr</name><value><int>0</int></value></member><member><name>sys</name><value><int>0</int></value></member><member><name>usr</name><value><double>0.0200000000000005"
                         + "</double></value></member><member><name>wallclock</name><value><double>2.547471</double></value></member></struct></value></member><member><name>request</name><value><struct><member><name>state</name><value><string>CO</string></value></member><member><name>%sort</name><value><array><data /></array></value></member><member><name>%id</name><value><string>4669b341d87be7f450b4bf0dc4cd0a1e</string></value></member><member><name>city</name><value><string>denver</string></value></member><member><name>%limit</name><value><int>10</int></value></member><member><name>%offset</name><value><int>0</int></value></member></struct></value></member></struct></value></param></params></methodResponse>";
            StringReader     sr         = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcResponse   response   = serializer.DeserializeResponse(sr,
                                                                         typeof(XmlRpcStruct));

            XmlRpcStruct response_struct = (XmlRpcStruct)response.retVal;
            XmlRpcStruct _response       = (XmlRpcStruct)response_struct["response"];
            Array        results         = (Array)_response["result"];

            Assert.AreEqual(results.Length, 1);
        }
        public void InvalidInteger()
        {
            string           xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>TestInt</methodName> 
<params>
  <param>
    <value><i4>12kiol</i4></value>
  </param>
</params>
</methodCall>";
            StringReader     sr         = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest    request    = serializer.DeserializeRequest(sr, null);

            Assert.Fail("Invalid integer should cause exception");
        }
Exemplo n.º 13
0
        public static object Parse(
            XmlDocument xdoc,
            Type valueType,
            MappingAction action,
            out Type parsedType,
            out Type parsedArrayType)
        {
            XmlNode node = xdoc.SelectSingleNode("value").FirstChild;

            XmlRpcSerializer.ParseStack parseStack
                = new XmlRpcSerializer.ParseStack("request");
            XmlRpcSerializer ser = new XmlRpcSerializer();
            object           obj = ser.ParseValue(node, valueType, parseStack, action,
                                                  out parsedType, out parsedArrayType);

            return(obj);
        }
Exemplo n.º 14
0
        public void StructParamsGetInfo()
        {
            Stream stm = new MemoryStream();
            var    req = new XmlRpcRequest();

            req.args = new Object[] {
                "Bob Dylan",
                "abcd1234"
            };
            req.method = "artist.getInfo";
            req.mi     = GetType().GetMethod("getInfo");
            var ser = new XmlRpcSerializer();

            ser.Indentation = 2;
            ser.UseIntTag   = true;
            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            var        reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>artist.getInfo</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>artist</name>
            <value>
              <string>Bob Dylan</string>
            </value>
          </member>
          <member>
            <name>api_key</name>
            <value>
              <string>abcd1234</string>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemplo n.º 15
0
        public void EmptyValueReturn()
        {
            var xml        = @"<?xml version=""1.0"" ?> 
<methodResponse>
  <params>
    <param>
      <value/>
    </param>
  </params>
</methodResponse>";
            var sr         = new StringReader(xml);
            var serializer = new XmlRpcSerializer();
            var response   = serializer.DeserializeResponse(sr, typeof(string));
            var s          = (string)response.retVal;

            Assert.IsTrue(s == "", "retval is empty string");
        }
Exemplo n.º 16
0
        public void DeserializeZeroParameters()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>FooZeroParameters</methodName>
  <params />
</methodCall>";
            StringReader     sr         = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest    request    = serializer.DeserializeRequest(sr,
                                                                        this.GetType());

            Assert.AreEqual(request.method, "FooZeroParameters",
                            "method is FooZeroParameters");
            Assert.AreEqual(0, request.args.Length, "no arguments");
        }
Exemplo n.º 17
0
        public void ReturnNestedStruct()
        {
            var xml = @"<?xml version=""1.0"" encoding=""ISO-8859-1""?> 
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>version</name>
            <value><string>1.6</string></value>
          </member>
          <member>
            <name>record</name>
            <value>
              <struct>
                <member>
                  <name>firstName</name>
                  <value>Joe</value></member>
                <member>
                  <name>lastName</name>
                  <value>Test</value>
                </member>
              </struct>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>";

            var sr         = new StringReader(xml);
            var serializer = new XmlRpcSerializer();
            var response
                = serializer.DeserializeResponse(sr, typeof(MyStruct));

            var o = response.retVal;

            Assert.IsTrue(o is MyStruct, "retval is MyStruct");
            var mystr = (MyStruct)o;

            Assert.AreEqual(mystr.version, "1.6", "version is 1.6");
            Assert.IsTrue(mystr.record.firstName == "Joe", "firstname is Joe");
            Assert.IsTrue(mystr.record.lastName == "Test", "lastname is Test");
        }
Exemplo n.º 18
0
        public string Invoke(Stream requestStream)
        {
            try
            {
                var xmlRpcSerializer = new XmlRpcSerializer();

                var xmlRpcServiceAttribute = (XmlRpcServiceAttribute)Attribute.GetCustomAttribute(this.GetType(), typeof(XmlRpcServiceAttribute));
                if (xmlRpcServiceAttribute != null)
                {
                    if (xmlRpcServiceAttribute.XmlEncoding != null)
                    {
                        xmlRpcSerializer.XmlEncoding = Encoding.GetEncoding(xmlRpcServiceAttribute.XmlEncoding);
                    }
                    xmlRpcSerializer.UseIntTag      = xmlRpcServiceAttribute.UseIntTag;
                    xmlRpcSerializer.UseStringTag   = xmlRpcServiceAttribute.UseStringTag;
                    xmlRpcSerializer.UseIndentation = xmlRpcServiceAttribute.UseIndentation;
                    xmlRpcSerializer.Indentation    = xmlRpcServiceAttribute.Indentation;
                }

                var bodyStream = new StreamReader(requestStream);
                bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);

                var    request  = xmlRpcSerializer.DeserializeRequest(bodyStream, this.GetType());
                var    response = Invoke(request);
                Stream stream   = new MemoryStream();
                xmlRpcSerializer.SerializeResponse(stream, response);
                stream.Seek(0L, SeekOrigin.Begin);

                var reader = new StreamReader(stream);
                return(reader.ReadToEnd());
            }
            catch (Exception ex)
            {
                loggingDataService.AddEvent(new EventDataItem(EventCodes.Error, ex.Message, "XmlRpcManager.Invoke"));

                var    faultEx           = (!(ex is XmlRpcException)) ? ((!(ex is XmlRpcFaultException)) ? new XmlRpcFaultException(0, ex.Message) : ((XmlRpcFaultException)ex)) : new XmlRpcFaultException(0, ((XmlRpcException)ex).Message);
                var    xmlRpcSerializer2 = new XmlRpcSerializer();
                Stream stream2           = new MemoryStream();
                xmlRpcSerializer2.SerializeFaultResponse(stream2, faultEx);
                stream2.Seek(0L, SeekOrigin.Begin);

                var reader2 = new StreamReader(stream2);
                return(reader2.ReadToEnd());
            }
        }
Exemplo n.º 19
0
        public void Class()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
  <methodName>TestClassMethod</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>_int</name>
            <value>
              <i4>456</i4>
            </value>
          </member>
          <member>
            <name>_string</name>
            <value>
              <string>Test Class</string>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>";

            StringReader sr = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest request = serializer.DeserializeRequest(sr, GetType());

            Assert.AreEqual(request.args[0].GetType(), typeof(TestClass),
              "argument is TestClass");
            //      XmlRpcStruct xrs = (XmlRpcStruct)request.args[0];
            //      Assert.IsTrue(xrs.Count == 4, "XmlRpcStruct has 4 members");
            //      Assert.IsTrue(xrs.ContainsKey("member1") && (int)xrs["member1"] == 1, 
            //        "member1");
            //      Assert.IsTrue(xrs.ContainsKey("member2") && (int)xrs["member2"] == 2, 
            //        "member2");
            //      Assert.IsTrue(xrs.ContainsKey("member-3") && (int)xrs["member-3"] == 3,
            //        "member-3");
            //      Assert.IsTrue(xrs.ContainsKey("member-4") && (int)xrs["member-4"] == 4,
            //        "member-4");

        }
Exemplo n.º 20
0
        public ServerProcessing ProcessMessage(
            IServerChannelSinkStack sinkStack,
            IMessage requestMsg,
            ITransportHeaders requestHeaders,
            Stream requestStream,
            out IMessage responseMsg,
            out ITransportHeaders responseHeaders,
            out Stream responseStream
            )
        {
            // use presence of SOAPAction header to determine if this is a SOAP
            // request - if so pass onto next sink in chain
            string soapAction = (string)requestHeaders["SOAPAction"];

            if (soapAction != null)
            {
                return(m_next.ProcessMessage(sinkStack, requestMsg, requestHeaders,
                                             requestStream, out responseMsg, out responseHeaders,
                                             out responseStream));
            }

            // for time being assume we have an XML-RPC request (need to improve
            // this in case there are other non-SOAP formatters in the chain)
            try
            {
                MethodCall mthdCall = DeserializeRequest(requestHeaders, requestStream);
                sinkStack.Push(this, mthdCall);
                // forward to next sink in chain - pass request stream as null to
                // indicate that we have deserialized the request
                m_next.ProcessMessage(sinkStack, mthdCall, requestHeaders, null,
                                      out responseMsg, out responseHeaders, out responseStream);
                SerializeResponse(responseMsg, ref responseHeaders, ref responseStream);
            }
            catch (Exception ex)
            {
                responseMsg    = new ReturnMessage(ex, (IMethodCallMessage)requestMsg);
                responseStream = new MemoryStream();
                XmlRpcFaultException fex        = new XmlRpcFaultException(0, ex.Message);
                XmlRpcSerializer     serializer = new XmlRpcSerializer();
                serializer.SerializeFaultResponse(responseStream,
                                                  (XmlRpcFaultException)fex);
                responseHeaders = new TransportHeaders();
            }
            return(ServerProcessing.Complete);
        }
Exemplo n.º 21
0
        public void Class()
        {
            Stream stm = new MemoryStream();
            var    req = new XmlRpcRequest();
            var    arg = new TestClass();

            arg._int    = 456;
            arg._string = "Test Class";
            req.args    = new Object[] {
                arg
            };
            req.method = "Foo";
            var ser = new XmlRpcSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            var        reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>_int</name>
            <value>
              <i4>456</i4>
            </value>
          </member>
          <member>
            <name>_string</name>
            <value>
              <string>Test Class</string>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemplo n.º 22
0
        public void NoParam1()
        {
            try
            {
                string           xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
  <methodName>MethodNoArgs</methodName> 
  <params/>
</methodCall>";
                StringReader     sr         = new StringReader(xml);
                XmlRpcSerializer serializer = new XmlRpcSerializer();
                XmlRpcRequest    request    = serializer.DeserializeRequest(sr, this.GetType());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        public void TooFewParameters()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param>
<value>
<string>myusername</string>
</value>
</param>
</params>
</methodCall>";

            StringReader     sr         = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest    request    = serializer.DeserializeRequest(sr, GetType());
        }
Exemplo n.º 24
0
        public void TooFewParameters()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param>
<value>
<string>myusername</string>
</value>
</param>
</params>
</methodCall>";

            StringReader sr = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            Assert.That(() => serializer.DeserializeRequest(sr, GetType()), Throws.TypeOf<XmlRpcInvalidParametersException>());
        }
Exemplo n.º 25
0
        public void DeserializeParamsEmpty()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo</methodName>
  <params/>
</methodCall>";
            StringReader     sr         = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest    request    = serializer.DeserializeRequest(sr, this.GetType());

            Assert.AreEqual(request.method, "Foo", "method is Foo");
            Assert.AreEqual(request.args[0].GetType(), typeof(object[]),
                            "argument is obj[]");
            Assert.AreEqual((request.args[0] as object[]).Length, 0,
                            "argument is empty array of object");
        }
Exemplo n.º 26
0
        public void IntegerIncorrectType()
        {
            try {
                var xml        = @"<?xml version=""1.0"" ?> 
<methodResponse>
  <params>
    <param>
      <value><int>12345</int></value>
    </param>
  </params>
</methodResponse>";
                var sr         = new StringReader(xml);
                var serializer = new XmlRpcSerializer();
                var response   = serializer.DeserializeResponse(sr, typeof(string));
                Assert.Fail("Should throw XmlRpcTypeMismatchException");
            }
            catch (XmlRpcTypeMismatchException) {}
        }
Exemplo n.º 27
0
        public void ZeroI8()
        {
            string xml = @"<?xml version=""1.0"" ?> 
<methodCall>
  <methodName>TestInt</methodName> 
  <params>
    <param>
      <value><i8>0</i8></value>
    </param>
  </params>
</methodCall>";
            StringReader sr = new StringReader(xml);
            XmlRpcSerializer serializer = new XmlRpcSerializer();
            XmlRpcRequest request = serializer.DeserializeRequest(sr, null);
            Assert.AreEqual(request.args[0].GetType(), typeof(long),
              "argument is long");
            Assert.AreEqual((long)request.args[0], 0, "argument is 0");
        }
Exemplo n.º 28
0
        public void NilType()
        {
            var xml        = @"<?xml version=""1.0"" ?> 
<methodResponse>
  <params>
    <param>
      <value><nil/></value>
    </param>
  </params>
</methodResponse>";
            var sr         = new StringReader(xml);
            var serializer = new XmlRpcSerializer();
            var response   = serializer.DeserializeResponse(sr, null);

            var o = response.retVal;

            Assert.AreEqual(null, o, "retval is null");
        }
Exemplo n.º 29
0
        public void BillKeenanProblem()
        {
            var xml        = @"<?xml version='1.0'?> 
<methodResponse> 
  <params> 
    <param> 
      <value>
        <struct>
          <member>
            <name>x</name>
            <value>
              <i4>123</i4>
            </value>
          </member>
          <member>
            <name>s</name>
            <value>
              <string>ABD~~DEF</string>
            </value>
          </member>
          <member>
            <name>unexpected</name>
            <value>
              <string>this is unexpected</string>
            </value>
          </member>
        </struct>
      </value> 
    </param> 
  </params> 
</methodResponse>";
            var sr         = new StringReader(xml);
            var serializer = new XmlRpcSerializer();
            var response
                = serializer.DeserializeResponse(sr, typeof(BillStruct));

            var o = response.retVal;

            Assert.IsTrue(o is BillStruct, "retval is BillStruct");
            var bs = (BillStruct)o;

            Assert.IsTrue(bs.x == 123 && bs.s == "ABD~~DEF", "struct members");
        }
Exemplo n.º 30
0
        public void StructParamsTooManyParams()
        {
            Stream stm = new MemoryStream();
            var    req = new XmlRpcRequest();

            req.args = new Object[] {
                1234,
                "test",
                10.1,
                "lopol"
            };
            req.method = "Foo";
            req.mi     = GetType().GetMethod("Foo");
            var ser = new XmlRpcSerializer();

            ser.Indentation = 2;
            ser.UseIntTag   = true;
            ser.SerializeRequest(stm, req);
        }