예제 #1
0
        static public String GetResourceName(IGxContext context,
                                             String sLocation)
        {
            GxLocation oLocation;

            oLocation = SoapParm.getlocation(context, sLocation);
            if (context.nSOAPErr == 0)
            {
                sLocation = oLocation.ResourceName;
            }
            else
            {
                sLocation = "";
            }
            return(sLocation);
        }
예제 #2
0
 void executePrivate( )
 {
     /* GeneXus formulas */
     /* Output device settings */
     context.nSOAPErr         = 0;
     context.sSOAPErrMsg      = "";
     GXSoapHTTPClient.Host    = context.GetServerName( );
     GXSoapHTTPClient.Port    = context.GetServerPort( );
     GXSoapHTTPClient.BaseURL = context.GetScriptPath( );
     SoapParm.AssignLocationProperties(context, "AwsCalcularPasajeros", GXSoapHTTPClient);
     GXSoapHTTPClient.AddHeader("Content-type", "text/xml;charset=utf-8");
     GXSoapHTTPClient.AddHeader("SOAPAction", "CalcularPeajesaction/" + "AWSCALCULARPASAJEROS.Execute");
     GXSoapXMLWriter.OpenRequest(GXSoapHTTPClient);
     GXSoapXMLWriter.WriteStartDocument("utf-8", 0);
     GXSoapXMLWriter.WriteStartElement("SOAP-ENV:Envelope");
     GXSoapXMLWriter.WriteAttribute("xmlns:SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
     GXSoapXMLWriter.WriteAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
     GXSoapXMLWriter.WriteAttribute("xmlns:SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/");
     GXSoapXMLWriter.WriteAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
     GXSoapXMLWriter.WriteStartElement("SOAP-ENV:Body");
     GXSoapXMLWriter.WriteStartElement("Execute");
     GXSoapXMLWriter.WriteAttribute("xmlns", "CalcularPeajes");
     GXSoapXMLWriter.WriteElement("Paxitc", StringUtil.Trim(StringUtil.Str((decimal)(AV2PAXITC), 10, 0)));
     GXSoapXMLWriter.WriteAttribute("xmlns", "http://tempuri.org/");
     GXSoapXMLWriter.WriteElement("Trb", StringUtil.Trim(StringUtil.Str((decimal)(AV3TRB), 10, 0)));
     GXSoapXMLWriter.WriteAttribute("xmlns", "http://tempuri.org/");
     GXSoapXMLWriter.WriteElement("Cpsuab", StringUtil.Trim(StringUtil.Str((decimal)(AV4CPSUAB), 10, 0)));
     GXSoapXMLWriter.WriteAttribute("xmlns", "http://tempuri.org/");
     GXSoapXMLWriter.WriteEndElement();
     GXSoapXMLWriter.WriteEndElement();
     GXSoapXMLWriter.WriteEndElement();
     GXSoapXMLWriter.Close();
     GXSoapHTTPClient.Execute("POST", "awscalcularpasajeros.aspx");
     if (GXSoapHTTPClient.ErrCode != 0)
     {
         currSoapErr    = (short)(GXSoapHTTPClient.ErrCode * -1 - 10000);
         currSoapErrmsg = GXSoapHTTPClient.ErrDescription;
     }
     GXSoapXMLReader.OpenResponse(GXSoapHTTPClient);
     GXSoapError = GXSoapXMLReader.Read();
     while (GXSoapError > 0)
     {
         if (StringUtil.StringSearch(GXSoapXMLReader.Name, "Body", 1) > 0)
         {
             if (true)
             {
                 break;
             }
         }
         GXSoapError = GXSoapXMLReader.Read();
     }
     if (GXSoapError > 0)
     {
         GXSoapError = GXSoapXMLReader.Read();
         if ((GXSoapError > 0) && (StringUtil.StrCmp(GXSoapXMLReader.LocalName, "Fault") == 0))
         {
             soapFault = 1;
         }
     }
     sTagName = GXSoapXMLReader.Name;
     if (GXSoapXMLReader.IsSimple == 0)
     {
         if (soapFault == 0)
         {
             GXSoapError = GXSoapXMLReader.Read();
             if ((GXSoapError > 0) && (StringUtil.StrCmp(GXSoapXMLReader.LocalName, "Fault") == 0))
             {
                 soapFault = 1;
             }
         }
         if (soapFault == 1)
         {
             GXSoapXMLReader.Read();
             while (!((StringUtil.StrCmp(GXSoapXMLReader.LocalName, "Fault") == 0) && (GXSoapXMLReader.NodeType == 2)))
             {
                 if (StringUtil.StrCmp(StringUtil.Lower(GXSoapXMLReader.Name), "faultcode") == 0)
                 {
                     sFaultCode = GXSoapXMLReader.Value;
                 }
                 else if (StringUtil.StrCmp(StringUtil.Lower(GXSoapXMLReader.Name), "faultstring") == 0)
                 {
                     sFaultString = GXSoapXMLReader.Value;
                 }
                 else if (StringUtil.StrCmp(StringUtil.Lower(GXSoapXMLReader.Name), "detail") == 0)
                 {
                     if (GXSoapXMLReader.IsSimple == 0)
                     {
                         GXSoapXMLReader.Read();
                         sDetail = GXSoapXMLReader.ReadRawXML();
                     }
                     else
                     {
                         sDetail = GXSoapXMLReader.Value;
                     }
                 }
                 GXSoapXMLReader.Read();
             }
             if (StringUtil.StringSearch(StringUtil.Lower(sFaultCode), "client", 1) > 0)
             {
                 currSoapErr    = (short)(-20004);
                 currSoapErrmsg = currSoapErrmsg + "SOAP Fault: Error in client request." + StringUtil.NewLine( ) + "Message: " + sFaultString + StringUtil.NewLine( ) + "Detail: " + sDetail;
             }
             else if (StringUtil.StringSearch(StringUtil.Lower(sFaultCode), "server", 1) > 0)
             {
                 currSoapErr    = (short)(-20005);
                 currSoapErrmsg = currSoapErrmsg + "SOAP Fault: Error in server execution." + StringUtil.NewLine( ) + "Message: " + sFaultString + StringUtil.NewLine( ) + "Detail: " + sDetail;
             }
             else
             {
                 currSoapErr    = (short)(-20006);
                 currSoapErrmsg = currSoapErrmsg + "Unknown error: " + sFaultCode + StringUtil.NewLine( ) + "Message: " + sFaultString + StringUtil.NewLine( ) + "Detail: " + sDetail;
             }
         }
         else
         {
             nOutParmCount = 0;
             while (((StringUtil.StrCmp(GXSoapXMLReader.Name, sTagName) != 0) || (GXSoapXMLReader.NodeType == 1)) && (GXSoapError > 0))
             {
                 readOk = 0;
                 if (StringUtil.StrCmp2(GXSoapXMLReader.LocalName, "Resultado") && (GXSoapXMLReader.NodeType != 2) && (StringUtil.StrCmp(GXSoapXMLReader.NamespaceURI, "http://tempuri.org/") == 0))
                 {
                     AV5Resultado = GXSoapXMLReader.Value;
                     if (GXSoapError > 0)
                     {
                         readOk = 1;
                     }
                     GXSoapError = GXSoapXMLReader.Read();
                 }
                 nOutParmCount = (short)(nOutParmCount + 1);
                 if (readOk == 0)
                 {
                     context.sSOAPErrMsg = context.sSOAPErrMsg + "Error reading " + sTagName + StringUtil.NewLine( );
                     context.sSOAPErrMsg = context.sSOAPErrMsg + "Message: " + GXSoapXMLReader.ReadRawXML();
                     GXSoapError         = (short)(nOutParmCount * -1);
                 }
             }
         }
     }
     GXSoapXMLReader.Close();
     if (currSoapErr == 0)
     {
         if (GXSoapError < 0)
         {
             currSoapErr    = (short)(GXSoapError * -1);
             currSoapErrmsg = context.sSOAPErrMsg;
         }
         else
         {
             if (GXSoapXMLReader.ErrCode > 0)
             {
                 currSoapErr    = (short)(GXSoapXMLReader.ErrCode * -1);
                 currSoapErrmsg = GXSoapXMLReader.ErrDescription;
             }
             else
             {
                 if (GXSoapError == 0)
                 {
                     currSoapErr    = (short)(-20001);
                     currSoapErrmsg = "Malformed SOAP message.";
                 }
                 else
                 {
                     currSoapErr    = 0;
                     currSoapErrmsg = "No error.";
                 }
             }
         }
     }
     if (currSoapErr != 0)
     {
         oLocation = SoapParm.getlocation(context, "AwsCalcularPasajeros");
         if (oLocation.CancelOnError == 1)
         {
             throw new Exception(currSoapErrmsg + "(" + StringUtil.LTrim(StringUtil.NToC((decimal)(currSoapErr), 6, 0, ".", "")) + ")");
         }
     }
     context.nSOAPErr    = currSoapErr;
     context.sSOAPErrMsg = currSoapErrmsg;
     this.cleanup();
 }
예제 #3
0
        static public void AssignLocationProperties(IGxContext context,
                                                    String sLocation,
                                                    GxHttpClient oClient)
        {
            GxLocation oLocation;
            GxLocation oGroupLocation;
            String     sGroupLocation;
            short      nGroupErr;

            oLocation = SoapParm.getlocation(context, sLocation);
            if (context.nSOAPErr != 0)
            {
                sGroupLocation = "LOC:" + oClient.Host + oClient.BaseURL;
                oGroupLocation = context.colLocations.GetItem(sGroupLocation);
                nGroupErr      = 0;
                if (oGroupLocation == null)
                {
                    nGroupErr = 1;
                }
                if (nGroupErr == 0)
                {
                    context.nSOAPErr        = 0;
                    oLocation.GroupLocation = sGroupLocation;
                    assigngroupproperties(context, oLocation);
                }
            }
            if (context.nSOAPErr == 0)
            {
                if (StringUtil.StrCmp(oLocation.Host, "") != 0)
                {
                    oClient.Host = oLocation.Host;
                }
                if (oLocation.Port != -1)
                {
                    oClient.Port = oLocation.Port;
                }
                if (StringUtil.StrCmp(oLocation.ProxyServerHost, "") != 0)
                {
                    oClient.ProxyServerHost = oLocation.ProxyServerHost;
                }
                if (oLocation.ProxyServerPort != -1)
                {
                    oClient.ProxyServerPort = (short)(oLocation.ProxyServerPort);
                }
                if (StringUtil.StrCmp(oLocation.BaseUrl, "") != 0)
                {
                    oClient.BaseURL = oLocation.BaseUrl;
                }
                if (oLocation.Secure != -1)
                {
                    oClient.Secure = (BooleanUtil.Val(StringUtil.Str((decimal)(oLocation.Secure), 1, 0)) ? 1 : 0);
                }
                if (oLocation.Timeout != -1)
                {
                    oClient.Timeout = oLocation.Timeout;
                }
                if (StringUtil.StrCmp(oLocation.ProxyAuthenticationUser, "") != 0)
                {
                    oClient.AddProxyAuthentication(oLocation.ProxyAuthenticationMethod, oLocation.ProxyAuthenticationRealm, oLocation.ProxyAuthenticationUser, oLocation.ProxyAuthenticationPassword);
                }
                if (StringUtil.StrCmp(oLocation.Certificate, "") != 0)
                {
                    oClient.AddCertificate(oLocation.Certificate);
                }
                if (oLocation.Authentication == 1)
                {
                    oClient.AddAuthentication(oLocation.AuthenticationMethod, oLocation.AuthenticationRealm, oLocation.AuthenticationUser, oLocation.AuthenticationPassword);
                }
            }
        }
예제 #4
0
        public String execute( )
        {
            String returnexecute;

            returnexecute            = "";
            context.nSOAPErr         = 0;
            context.sSOAPErrMsg      = "";
            GXSoapHTTPClient.Host    = "tise-wks-345508.canal.acp";
            GXSoapHTTPClient.Port    = 80;
            GXSoapHTTPClient.BaseURL = "/CalcularPeajes.NetEnvironment/";
            SoapParm.AssignLocationProperties(context, "wsrest_services", GXSoapHTTPClient);
            if (StringUtil.StrCmp(defaultExecute, "") == 0)
            {
                targetResourceName = (String)(SoapParm.GetResourceName(context, "wsrest_services"));
                if (StringUtil.StrCmp(targetResourceName, "") == 0)
                {
                    execName = "wsrest.svc";
                }
                else
                {
                    execName = targetResourceName;
                }
            }
            else
            {
                execName = defaultExecute;
            }
            GXSoapHTTPClient.AddHeader("Content-type", "text/xml;charset=utf-8");
            GXSoapHTTPClient.AddHeader("SOAPAction", "GeneXus.Programs.wsrest_services/wsrest_services/execute");
            GXSoapXMLWriter.OpenRequest(GXSoapHTTPClient);
            GXSoapXMLWriter.WriteStartDocument("utf-8", 0);
            GXSoapXMLWriter.WriteStartElement("SOAP-ENV:Envelope");
            GXSoapXMLWriter.WriteAttribute("xmlns:SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
            GXSoapXMLWriter.WriteAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
            GXSoapXMLWriter.WriteAttribute("xmlns:SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/");
            GXSoapXMLWriter.WriteAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
            if (!(soapHeaders == null))
            {
                if (soapHeaders.Count > 0)
                {
                    soapHeaders.writexml(GXSoapXMLWriter, "SOAP-ENV:Header", "");
                }
            }
            else
            {
                if (!(String.IsNullOrEmpty(StringUtil.RTrim(soapHeadersRaw))))
                {
                    GXSoapXMLWriter.WriteStartElement("SOAP-ENV:Header");
                    GXSoapXMLWriter.WriteRawText(soapHeadersRaw);
                    GXSoapXMLWriter.WriteEndElement();
                }
            }
            GXSoapXMLWriter.WriteStartElement("SOAP-ENV:Body");
            GXSoapXMLWriter.WriteElement("execute", "");
            GXSoapXMLWriter.WriteAttribute("xmlns", "GeneXus.Programs.wsrest_services");
            GXSoapXMLWriter.WriteEndElement();
            GXSoapXMLWriter.WriteEndElement();
            GXSoapXMLWriter.Close();
            GXSoapHTTPClient.Execute("POST", execName);
            if (GXSoapHTTPClient.ErrCode != 0)
            {
                currSoapErr    = (short)(GXSoapHTTPClient.ErrCode * -1 - 10000);
                currSoapErrmsg = GXSoapHTTPClient.ErrDescription;
            }
            GXSoapXMLReader.OpenResponse(GXSoapHTTPClient);
            GXSoapError = GXSoapXMLReader.Read();
            while (GXSoapError > 0)
            {
                if (StringUtil.StringSearch(GXSoapXMLReader.Name, "Body", 1) > 0)
                {
                    if (true)
                    {
                        break;
                    }
                }
                GXSoapError = GXSoapXMLReader.Read();
            }
            if (GXSoapError > 0)
            {
                GXSoapError = GXSoapXMLReader.Read();
                if ((GXSoapError > 0) && (StringUtil.StrCmp(GXSoapXMLReader.LocalName, "Fault") == 0))
                {
                    soapFault = 1;
                }
            }
            sTagName = GXSoapXMLReader.Name;
            if (GXSoapXMLReader.IsSimple == 0)
            {
                if (soapFault == 0)
                {
                    GXSoapError = GXSoapXMLReader.Read();
                    if ((GXSoapError > 0) && (StringUtil.StrCmp(GXSoapXMLReader.LocalName, "Fault") == 0))
                    {
                        soapFault = 1;
                    }
                }
                if (soapFault == 1)
                {
                    soapFaultHandling( );
                }
                else
                {
                    nOutParmCount = 0;
                    while (((StringUtil.StrCmp(GXSoapXMLReader.Name, sTagName) != 0) || (GXSoapXMLReader.NodeType == 1)) && (GXSoapError > 0))
                    {
                        readOk = 0;
                        if (StringUtil.StrCmp2(GXSoapXMLReader.LocalName, "Resultado") && (GXSoapXMLReader.NodeType != 2) && (StringUtil.StrCmp(GXSoapXMLReader.NamespaceURI, "GeneXus.Programs.wsrest_services") == 0))
                        {
                            returnexecute = GXSoapXMLReader.Value;
                            if (GXSoapError > 0)
                            {
                                readOk = 1;
                            }
                            GXSoapError = GXSoapXMLReader.Read();
                        }
                        nOutParmCount = (short)(nOutParmCount + 1);
                        if (readOk == 0)
                        {
                            context.sSOAPErrMsg = context.sSOAPErrMsg + "Error reading " + sTagName + StringUtil.NewLine( );
                            context.sSOAPErrMsg = context.sSOAPErrMsg + "Message: " + GXSoapXMLReader.ReadRawXML();
                            GXSoapError         = (short)(nOutParmCount * -1);
                        }
                    }
                }
            }
            GXSoapXMLReader.Close();
            if (currSoapErr == 0)
            {
                if (GXSoapError < 0)
                {
                    currSoapErr    = (short)(GXSoapError * -1);
                    currSoapErrmsg = context.sSOAPErrMsg;
                }
                else
                {
                    if (GXSoapXMLReader.ErrCode > 0)
                    {
                        currSoapErr    = (short)(GXSoapXMLReader.ErrCode * -1);
                        currSoapErrmsg = GXSoapXMLReader.ErrDescription;
                    }
                    else
                    {
                        if (GXSoapError == 0)
                        {
                            currSoapErr    = (short)(-20001);
                            currSoapErrmsg = "Malformed SOAP message.";
                        }
                        else
                        {
                            currSoapErr    = 0;
                            currSoapErrmsg = "No error.";
                        }
                    }
                }
            }
            if (currSoapErr != 0)
            {
                oLocation = SoapParm.getlocation(context, "wsrest_services");
                if ((oLocation.CancelOnError == 0) || (oLocation.CancelOnError == 1))
                {
                    throw new Exception(currSoapErrmsg + "(" + StringUtil.LTrim(StringUtil.NToC((decimal)(currSoapErr), 6, 0, ".", "")) + ")");
                }
            }
            context.nSOAPErr    = currSoapErr;
            context.sSOAPErrMsg = currSoapErrmsg;
            return(returnexecute);
        }