System.ServiceModel.Channels.Message IDispatchMessageFormatter.SerializeReply(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters, object result) { MemoryStream memStream = new MemoryStream(); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(memStream); //writer.WriteStartElement(XmlRpcProtocol.MethodResponse); writer.WriteStartElement(XmlRpcProtocol.Params); writer.WriteStartElement(XmlRpcProtocol.Param); writer.WriteStartElement(XmlRpcProtocol.Value); XmlRpcDataContractSerializationHelper.Serialize(writer, result); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); //writer.WriteEndElement(); writer.Flush(); memStream.Position = 0; XmlDictionaryReaderQuotas quotas = new XmlDictionaryReaderQuotas(); XmlRpcMessage xmlRpcMessage = new XmlRpcMessage(XmlDictionaryReader.CreateTextReader(memStream, quotas)); HttpResponseMessageProperty hrmp = new HttpResponseMessageProperty(); hrmp.Headers.Add(HttpResponseHeader.ContentType, "text/xml"); xmlRpcMessage.Properties.Add(HttpResponseMessageProperty.Name, hrmp); return(xmlRpcMessage); }
public string SelectOperation(ref System.ServiceModel.Channels.Message message) { XmlRpcMessage xmlRpcMessage = CreateXmlRpcMessage(message); message = xmlRpcMessage; if (xmlRpcMessage.Properties.ContainsKey("XmlRpcMethodName")) { string methodName = (string)message.Properties["XmlRpcMethodName"]; foreach (OperationDescription op in _contract.Operations) { if (op.Messages[0].Action.EndsWith(methodName)) { return(op.Name); } } } throw new EndpointNotFoundException(); }
System.ServiceModel.Channels.Message IClientMessageFormatter.SerializeRequest(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters) { MemoryStream memStream = new MemoryStream(); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(memStream); writer.WriteStartElement(XmlRpcProtocol.Params); foreach (object param in parameters) { writer.WriteStartElement(XmlRpcProtocol.Param); writer.WriteStartElement(XmlRpcProtocol.Value); XmlRpcDataContractSerializationHelper.Serialize(writer, param); writer.WriteEndElement(); writer.WriteEndElement(); } writer.WriteEndElement(); writer.Flush(); memStream.Position = 0; XmlDictionaryReaderQuotas quotas = new XmlDictionaryReaderQuotas(); XmlRpcMessage xmlRpcMessage = new XmlRpcMessage(_operationDescription.Messages[0].Action, XmlDictionaryReader.CreateTextReader(memStream, quotas), false); return(xmlRpcMessage); }
System.ServiceModel.Channels.Message IClientMessageFormatter.SerializeRequest(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters) { MemoryStream memStream = new MemoryStream(); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(memStream); writer.WriteStartElement(XmlRpcProtocol.Params); foreach (object param in parameters) { writer.WriteStartElement(XmlRpcProtocol.Param); writer.WriteStartElement(XmlRpcProtocol.Value); XmlRpcDataContractSerializationHelper.Serialize(writer, param); writer.WriteEndElement(); writer.WriteEndElement(); } writer.WriteEndElement(); writer.Flush(); memStream.Position = 0; XmlDictionaryReaderQuotas quotas = new XmlDictionaryReaderQuotas(); XmlRpcMessage xmlRpcMessage = new XmlRpcMessage(_operationDescription.Messages[0].Action,XmlDictionaryReader.CreateTextReader(memStream, quotas), false); return xmlRpcMessage; }
System.ServiceModel.Channels.Message IDispatchMessageFormatter.SerializeReply(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters, object result) { MemoryStream memStream = new MemoryStream(); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(memStream); //writer.WriteStartElement(XmlRpcProtocol.MethodResponse); writer.WriteStartElement(XmlRpcProtocol.Params); writer.WriteStartElement(XmlRpcProtocol.Param); writer.WriteStartElement(XmlRpcProtocol.Value); XmlRpcDataContractSerializationHelper.Serialize(writer, result); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); //writer.WriteEndElement(); writer.Flush(); memStream.Position = 0; XmlDictionaryReaderQuotas quotas = new XmlDictionaryReaderQuotas(); XmlRpcMessage xmlRpcMessage = new XmlRpcMessage(XmlDictionaryReader.CreateTextReader(memStream, quotas)); HttpResponseMessageProperty hrmp = new HttpResponseMessageProperty(); hrmp.Headers.Add(HttpResponseHeader.ContentType, "text/xml"); xmlRpcMessage.Properties.Add(HttpResponseMessageProperty.Name, hrmp); return xmlRpcMessage; }