Пример #1
0
        public XmlElement GalConnSubmitRequest(GalWebMethod _galMethod, XmlElement _request)
        {
            if (GetAuthTagName(_galMethod) == AuthTagName.Token && string.IsNullOrEmpty(_token))
            {
                CreateSession();
            }

            var resultBodyTask = this.SubmitRequestAsync(_galMethod, _token, _request, _filter);

            resultBodyTask.Wait();
            return(resultBodyTask.Result);
        }
Пример #2
0
 public AuthTagName GetAuthTagName(GalWebMethod _methodName)
 {
     if (_methodName == GalWebMethod.EndSession || _methodName == GalWebMethod.SubmitXmlOnSession ||
         _methodName == GalWebMethod.SubmitTerminalTransaction)
     {
         return(AuthTagName.Token);
     }
     else
     {
         return(AuthTagName.Profile);
     }
 }
Пример #3
0
        public XmlElement GetResponseBody(GalWebMethod _method, string _rawResponse)
        {
            string   xPath        = string.Empty;
            XElement responseBody = null;
            XElement tempResponse = XmlDomUtil.RemoveAllNamespaces(XElement.Parse(_rawResponse));

            switch (_method)
            {
            case GalWebMethod.BeginSession:
                xPath = "/Body/BeginSessionResponse/BeginSessionResult";
                break;

            case GalWebMethod.EndSession:
                xPath = "/Body/EndSessionResponse";
                break;

            case GalWebMethod.GetIdentityInfo:
                xPath = "Body/GetIdentityInfoResponse";
                break;

            case GalWebMethod.MultiSubmitXml:
                xPath = "Body";
                break;

            case GalWebMethod.SubmitCruiseTransaction:
                xPath = "Body";
                break;

            case GalWebMethod.SubmitTerminalTransaction:
                xPath = "Body/SubmitTerminalTransactionResponse/SubmitTerminalTransactionResult";
                break;

            case GalWebMethod.SubmitXml:
                xPath = "Body/SubmitXmlResponse/SubmitXmlResult";
                break;

            case GalWebMethod.SubmitXmlOnSession:
                xPath = "Body/SubmitXmlOnSessionResponse/SubmitXmlOnSessionResult";
                break;

            default:
                xPath = "NoImplementation";
                break;
            }

            responseBody = XmlDomUtil.GetChildElement(tempResponse, xPath);
            var respBody = responseBody.GetXmlDocument();

            return(respBody != null ? respBody.DocumentElement : null);
        }
Пример #4
0
        private XDocument GetSoapEnvelope(GalWebMethod _methodName, string _token, XElement _request, string _filter)
        {
            XNamespace methodNS       = WebServiceNS;
            XElement   xmlRequestBody = new XElement(methodNS + _methodName.ToString(),
                                                     new XAttribute("xmlns", WebServiceNS));

            if (GetAuthTagName(_methodName) == AuthTagName.Token)
            {
                xmlRequestBody.Add(new XElement(AuthTagName.Token.ToString(), _token));
            }
            else
            {
                xmlRequestBody.Add(new XElement(AuthTagName.Profile.ToString(), Profile));
            }

            if (_methodName != GalWebMethod.SubmitTerminalTransaction)
            {
                xmlRequestBody.Add(new XElement("LDVOverride", string.Empty));
            }

            if (_methodName != GalWebMethod.BeginSession && _methodName != GalWebMethod.EndSession)
            {
                xmlRequestBody.Add(new XElement("Request", _request));
            }

            xmlRequestBody.Add(new XElement("Filter", new XElement("_", new XAttribute("xmlns", _filter))));

            XDocument docBody = new XDocument(new XDeclaration("1.0", "utf-8", String.Empty),
                                              new XElement(soap + "Envelope",
                                                           new XAttribute(XNamespace.Xmlns + "soap", soap),
                                                           new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
                                                           new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"),
                                                           new XElement(soap + "Body", xmlRequestBody)));

            return(docBody);
        }
Пример #5
0
        public async Task <XmlElement> GalConnSubmitRequestAsync(GalWebMethod _galMethod, XmlElement _request)
        {
            var resultBody = await this.SubmitRequestAsync(_galMethod, _token, _request, _filter);

            return(resultBody);
        }
Пример #6
0
        public async Task <XmlElement> SubmitRequestAsync(GalWebMethod _methodName, string _token, XmlElement _request, string _filter)
        {
            string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(UserName + ":" + Password));

            XDocument          soapEnvelopeXml = GetSoapEnvelope(_methodName, _token, _request.GetXElement(), _filter);
            HttpClient         httpClient      = new HttpClient();
            HttpContent        httpContent     = new StringContent(soapEnvelopeXml.ToString());
            HttpRequestMessage req             = new HttpRequestMessage(HttpMethod.Post, Url);

            req.Headers.Add("SOAPAction", "\"" + WebServiceNS + _methodName.ToString() + "\"");
            req.Headers.Add("Authorization", "Basic " + svcCredentials);
            req.Method  = HttpMethod.Post;
            req.Content = httpContent;
            req.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml; charset=utf-8");

            HttpResponseMessage response;

            response = await httpClient.SendAsync(req);

            var responseBodyAsText = await response.Content.ReadAsStringAsync();

            #region C O M M E N T E D  C O D E  U S I N G   HttpWebRequest

            /*
             * HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(Url);
             * webRequest.Headers["SOAPAction"] = "http://webservices.galileo.com/" + _methodName.ToString();
             * webRequest.Headers["Authorization"] = "Basic " + svcCredentials;
             * webRequest.ContentType = "text/xml;charset=\"utf-8\"";
             * webRequest.Accept = "text/xml";
             * webRequest.Method = "POST";
             *
             *
             *
             * using (var stream = await Task.Factory.FromAsync<Stream>(webRequest.BeginGetRequestStream, webRequest.EndGetRequestStream, null))
             * {
             *  soapEnvelopeXml.Save(stream);
             * }
             *
             *
             *
             * // begin async call to web request.
             * IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null);
             *
             * // suspend this thread until call is complete. You might want to
             * // do something usefull here like update your UI.
             * asyncResult.AsyncWaitHandle.WaitOne();
             *
             * // get the response from the completed web request.
             * string soapResult;
             * using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))
             * {
             *  using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
             *  {
             *      soapResult = rd.ReadToEnd();
             *  }
             * }
             */
            #endregion

            return(GetResponseBody(_methodName, responseBodyAsText));
        }