public void TestRouter() { var router = new Router("OneService", "http://oscript.io/example/"); router.AddHandler(new RouterTest()); // Console.WriteLine(router.GenerateWsdl()); var xmlBody = XmlWriterImpl.Create(); xmlBody.SetString(ValueFactory.Create("UTF-8")); xmlBody.WriteStartElement("soap:Envelope"); xmlBody.WriteNamespaceMapping("xsi", "http://www.w3.org/2001/XMLSchema-instance"); xmlBody.WriteNamespaceMapping("xsd", "http://www.w3.org/2001/XMLSchema"); xmlBody.WriteNamespaceMapping("soap", "http://schemas.xmlsoap.org/soap/envelope/"); xmlBody.WriteNamespaceMapping("s", "http://oscript.io/example/"); xmlBody.WriteStartElement("soap:Body"); xmlBody.WriteStartElement("s:Sum"); xmlBody.WriteStartElement("s:p0"); xmlBody.WriteAttribute("xsi:type", "xsd:decimal"); xmlBody.WriteText("1"); xmlBody.WriteEndElement(); // s:p0 xmlBody.WriteStartElement("s:p1"); xmlBody.WriteAttribute("xsi:type", "xsd:decimal"); xmlBody.WriteText("2"); xmlBody.WriteEndElement(); // s:p1 xmlBody.WriteEndElement(); // s:Sum xmlBody.WriteEndElement(); // soap:Body xmlBody.WriteEndElement(); // soap:Envelope var requestString = xmlBody.Close().ToString(); Console.WriteLine(requestString); var responseString = router.Handle(requestString); Console.WriteLine(responseString); }
public static IWriter CreateWriter(TextWriter output, Format format) { switch (format) { case Format.Xml: var xws = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Fragment }; return(XmlWriterImpl.Create(output, xws)); #if FULL case Format.Json: return(JsonWriterImpl.Create(output)); case Format.JsonML: return(JsonMLWriter.Create(output)); #endif default: throw new NotSupportedException("format"); } }
public void TestXdto() { const string anyXml = @"<number>1</number>"; var reader = XmlReaderImpl.Create() as XmlReaderImpl; reader.SetString(anyXml); var factory = XdtoFactory.Constructor() as XdtoFactory; var expectedType = factory.Type(new XmlDataType("int")); var anyValue = factory.ReadXml(reader, expectedType) as XdtoDataValue; if (anyValue == null) { throw new Exception("XDTO не разобрался!"); } var writer = XmlWriterImpl.Create() as XmlWriterImpl; writer.SetString(); factory.WriteXml(writer, anyValue, "number"); var serializedResult = writer.Close().AsString(); Console.WriteLine("Original : {0}", anyXml); Console.WriteLine("Generated: {0}", serializedResult); reader = XmlReaderImpl.Create() as XmlReaderImpl; reader.SetString(serializedResult); var anyValueTypeExtraction = factory.ReadXml(reader) as XdtoDataValue; if (anyValueTypeExtraction == null) { throw new Exception("Новый XDTO не разобрался!"); } Console.WriteLine("Serialized:{0}", anyValueTypeExtraction.Value); }
/// <summary> /// Serializes given object. /// </summary> /// <typeparam name="T">The object type.</typeparam> /// <param name="schema">Serialization schema.</param> /// <param name="writer">The xml writer.</param> /// <param name="obj">The object to serialize.</param> public static void Write <T>(this IScope schema, XmlWriter writer, T obj) { using (var impl = XmlWriterImpl.Create(writer)) Write(schema, impl, obj); }
public override void CallAsFunction(int methodNumber, IValue [] arguments, out IValue retValue) { var operation = _operations [methodNumber]; retValue = ValueFactory.Create(); ConnectIfNeeded(); var headers = new MapImpl(); headers.Insert(ValueFactory.Create("Content-Type"), ValueFactory.Create("application/xml")); var xmlBody = XmlWriterImpl.Create(); xmlBody.SetString(ValueFactory.Create("UTF-8")); xmlBody.WriteStartElement("soap:Envelope"); xmlBody.WriteNamespaceMapping("xsi", "http://www.w3.org/2001/XMLSchema-instance"); xmlBody.WriteNamespaceMapping("xsd", "http://www.w3.org/2001/XMLSchema"); xmlBody.WriteNamespaceMapping("soap", "http://schemas.xmlsoap.org/soap/envelope/"); xmlBody.WriteNamespaceMapping("s", Endpoint.Interface.NamespaceURI); xmlBody.WriteStartElement("soap:Body"); var serializer = XdtoSerializerImpl.Constructor(XdtoFactory) as XdtoSerializerImpl; operation.WriteRequestBody(xmlBody, serializer, arguments); xmlBody.WriteEndElement(); // soap:Body xmlBody.WriteEndElement(); // soap:Envelope var requestString = xmlBody.Close().ToString(); if (DoDebug) { Console.WriteLine(requestString); } var responseText = _transport.Handle(requestString); var xmlResult = XmlReaderImpl.Create() as XmlReaderImpl; if (DoDebug) { Console.WriteLine(responseText); } // TODO: Отдать на разбор фабрике xmlResult.SetString(responseText); var result = operation.ParseResponse(xmlResult, serializer); if (result is SoapExceptionResponse) { throw new ScriptEngine.Machine.RuntimeException((result as SoapExceptionResponse).FaultMessage); } var soapResponse = result as SuccessfulSoapResponse; retValue = soapResponse.RetValue; foreach (var outParamData in soapResponse.OutputParameters) { var argument = arguments [outParamData.Key] as IVariable; if (argument == null) { continue; } argument.Value = outParamData.Value; } }