예제 #1
0
 public XmlRpcResponse DeserializeResponse(XmlReader rdr, Type returnType)
 {
     try
     {
         IEnumerator <Node> enumerator = new XmlRpcParser().ParseResponse(rdr).GetEnumerator();
         enumerator.MoveNext();
         if (enumerator.Current is FaultNode)
         {
             throw DeserializeFault(enumerator);
         }
         if (returnType == typeof(void) || !enumerator.MoveNext())
         {
             return(new XmlRpcResponse
             {
                 retVal = null
             });
         }
         Node   current = enumerator.Current;
         object obj     = MapValueNode(enumerator, returnType, new MappingStack("response"), MappingAction.Error);
         return(new XmlRpcResponse
         {
             retVal = obj
         });
     }
     catch (XmlException ex)
     {
         throw new XmlRpcIllFormedXmlException("Response contains invalid XML", ex);
     }
 }
예제 #2
0
        public object ParseValueElement(XmlReader rdr, Type valType, MappingStack mappingStack,
                                        MappingAction mappingAction)
        {
            IEnumerator <Node> enumerator = new XmlRpcParser().ParseValue(rdr).GetEnumerator();

            enumerator.MoveNext();
            return(MapValueNode(enumerator, valType, mappingStack, mappingAction));
        }
        public void ParseResponse(string xml)
        {
            var rdr  = XmlReader.Create(new StringReader(xml));
            var iter = new XmlRpcParser().ParseResponse(rdr).GetEnumerator();

            Assert.IsTrue(iter.MoveNext() && iter.Current is ResponseNode);
            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == "South Dakota");

            Assert.IsFalse(iter.MoveNext());
        }
예제 #4
0
        public bool Invoke(string methodName, object[] parameters, out object result)
        {
            XmlDocument    doc = XmlRpcFormatter.EncodeRequest(methodName, parameters);
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(_url);

            req.ContentType = "text/xml";
            req.Method      = "POST";
            using (Stream s = req.GetRequestStream())
            {
                doc.Save(s);
            }

            using (WebResponse response = req.GetResponse())
            {
                using (Stream s = response.GetResponseStream())
                {
                    XmlDocument responseDoc = new XmlDocument();
                    responseDoc.Load(s);
                    result = XmlRpcParser.ParseResponse(responseDoc);
                    return(true);
                }
            }
        }
        public void ParseRequest(string xml)
        {
            var rdr  = XmlReader.Create(new StringReader(xml));
            var iter = new XmlRpcParser().ParseRequest(rdr).GetEnumerator();

            Assert.IsTrue(iter.MoveNext());
            Assert.IsInstanceOf <MethodName>(iter.Current);
            Assert.AreEqual("examples.getValues", (iter.Current as MethodName).Name);

            Assert.IsTrue(iter.MoveNext() && iter.Current is ParamsNode);

            Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue &&
                          (iter.Current as IntValue).Value == "41");

            Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue &&
                          (iter.Current as IntValue).Value == "-12");

            Assert.IsTrue(iter.MoveNext() && iter.Current is LongValue &&
                          (iter.Current as LongValue).Value == "123456789012");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == "Hello World");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == "Hello World");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == " ");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == "");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == "");

            Assert.IsTrue(iter.MoveNext() && iter.Current is DoubleValue &&
                          (iter.Current as DoubleValue).Value == "-12.214");

            Assert.IsTrue(iter.MoveNext() && iter.Current is DateTimeValue &&
                          (iter.Current as DateTimeValue).Value == "19980717T14:08:55");

            Assert.IsTrue(iter.MoveNext() && iter.Current is Base64Value &&
                          (iter.Current as Base64Value).Value == "eW91IGNhbid0IHJlYWQgdGhpcyE=");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StructValue);

            Assert.IsTrue(iter.MoveNext() && iter.Current is StructMember &&
                          (iter.Current as StructMember).Value == "lowerBound");

            Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue &&
                          (iter.Current as IntValue).Value == "18");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StructMember &&
                          (iter.Current as StructMember).Value == "upperBound");

            Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue &&
                          (iter.Current as IntValue).Value == "139");

            Assert.IsTrue(iter.MoveNext());
            Assert.IsTrue(iter.Current is EndStructValue);

            Assert.IsTrue(iter.MoveNext());
            Assert.IsTrue(iter.Current is ArrayValue);

            Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue &&
                          (iter.Current as IntValue).Value == "12");

            Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue &&
                          (iter.Current as StringValue).Value == "Egypt");

            Assert.IsTrue(iter.MoveNext() && iter.Current is BooleanValue &&
                          (iter.Current as BooleanValue).Value == "0");

            Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue &&
                          (iter.Current as IntValue).Value == "-31");

            Assert.IsTrue(iter.MoveNext());
            Assert.IsTrue(iter.Current is EndArrayValue);

            Assert.IsFalse(iter.MoveNext());
        }