Ejemplo n.º 1
0
        public IncomingMessage SendRequest(OutgoingMessage requestMessage)
        {
            var httpRequest = (HttpWebRequest)WebRequest.Create(_serverUrl);

            httpRequest.Method    = "POST";
            httpRequest.MediaType = "application/soap+xml; charset=utf-8";
            requestMessage.AddHeader(new ToHeader(_serverUrl), true);
            if (requestMessage.GetHeader <MessageIdHeader>() == null)
            {
                requestMessage.AddHeader(MessageIdHeader.CreateRandom(), false);
            }
            SerializeRequestBody(httpRequest, requestMessage);
            var response = (HttpWebResponse)httpRequest.GetResponse();

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var responseStream = response.GetResponseStream();
                if (responseStream != null)
                {
                    return(new IncomingMessage(XmlReader.Create(responseStream)));
                }
                throw new SOAPException("Missing response body.");
            }
            var exceptionMessage = GetExceptionMessage(response.StatusCode);

            throw new SOAPException(exceptionMessage);
        }
        public OutgoingMessage Handle(IncomingMessage request)
        {
            var actionHeader    = request.GetHeader <ActionHeader>();
            var messageIdHeader = request.GetHeader <MessageIdHeader>();

            var outgoingMessage = ProcessMessage(request, actionHeader);

            if (outgoingMessage == null)
            {
                return(null);
            }
            outgoingMessage.AddHeader(MessageIdHeader.CreateRandom(), false);
            if (messageIdHeader != null)
            {
                outgoingMessage.AddHeader(new RelatesToHeader(messageIdHeader.MessageId), false);
            }
            outgoingMessage.AddHeader(ToHeader.Anonymous, false);
            return(outgoingMessage);
        }