如何实现saop信封消息的肥皂接收器c#

时间:2017-06-20 09:31:24

标签: c# asp.net web soap service

如何实现saop信封消息的肥皂接收器c# 我正在将我的应用程序与旧系统集成,应该响应我的系统作为回叫响应。 我的网络服务应该收到这条肥皂消息

creationTimeStamp

如何构建接受此肥皂消息的Web服务

1 个答案:

答案 0 :(得分:0)

您可以尝试以下

  • 将您的回调声明为帖子http方法
  • 取出您的请求正文并将其反序列化为POO
控制器中的

  [HttpPost]
        Public async Task<IHttpActionResult> ProcessRequest(string saopRequest)
        {   //here just a bit of string manipulation 
           var index = soapRequest.IndexOf("<ns2:processRequest");
                var lasindex = soapRequest.IndexOf("</ns2:processRequest>");
                var length = lasindex - index +"</ns2:processRequest>".Length  ;           
                var body = soapRequest.Substring(index,length);
                var request = body.Replace("ns2:", string.Empty).Replace("xmlns:ns2=\"http://b2b.mobilemoney.mtn.zm_v1.0/\"",string.Empty);

                XDocument xResult = XDocument.Parse(request);


                XmlSerializer deserializer = new XmlSerializer(typeof(ProcessRequest), new XmlRootAttribute("processRequest"));
                if (xResult.Root != null)
                {
                    var finalRequest= (ProcessRequest)deserializer.Deserialize(xResult.Root.CreateReader());
                    //do what you  want here 
                }                
        }



        [XmlRoot(ElementName="parameter")]
        public class Parameter {
            [XmlElement(ElementName="name")]
            public string Name { get; set; }
            [XmlElement(ElementName="value")]
            public string Value { get; set; }
        }

        [XmlRoot(ElementName="processRequest")]
        public class ProcessRequest {
            [XmlElement(ElementName="serviceId")]
            public string ServiceId { get; set; }
            [XmlElement(ElementName="parameter")]
            public List<Parameter> Parameter { get; set; }      
        }
}