public static void Main()
        {
            // demonstrates how to intellegently get the zone information.
                        // autotask will tell you which zone URL to use based on the userID
                        var client = new ATWSSoapClient ();
                        zoneInfo = client.getZoneInfo (auth_user_id);
                        Console.WriteLine ("ATWS Zone Info: \n\n"
                                + "URL = " + zoneInfo.URL);

                        // Create the binding.
                        // must use BasicHttpBinding instead of WSHttpBinding
                        // otherwise a "SOAP header Action was not understood." is thrown.
                        BasicHttpBinding myBinding = new BasicHttpBinding ();
                        myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
                        myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

                        // Must set the size otherwise
                        //The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
                        myBinding.MaxReceivedMessageSize = 2147483647;

                        // Create the endpoint address.
                        EndpointAddress ea = new EndpointAddress (zoneInfo.URL);

                        client = new ATWSSoapClient (myBinding, ea);
                        client.ClientCredentials.UserName.UserName = auth_user_id;
                        client.ClientCredentials.UserName.Password = auth_user_password;

                        // query for any account. This should return all accounts since we are retreiving anything greater than 0.
                        StringBuilder sb = new StringBuilder ();
                        sb.Append ("<queryxml><entity>Account</entity>").Append (System.Environment.NewLine);
                        sb.Append ("<query><field>id<expression op=\"greaterthan\">0</expression></field></query>").Append (System.Environment.NewLine);
                        sb.Append ("</queryxml>").Append (System.Environment.NewLine);

                        // have no clue what this does.
                        AutotaskIntegrations at_integrations = new AutotaskIntegrations ();

                        // this example will not handle the 500 results limitation.
                        // Autotask only returns up to 500 results in a response. if there are more you must query again for the next 500.
                        var r = client.query (at_integrations, sb.ToString ());
                        Console.WriteLine ("response ReturnCode = " + r.ReturnCode);
                        if (r.ReturnCode == 1) {
                                if (r.EntityResults.Length > 0) {
                                        foreach (var item in r.EntityResults) {
                                                Account acct = (Account)item;
                                                Console.WriteLine ("Account Name = " + acct.AccountName);
                                                Console.WriteLine ("Account number = " + acct.AccountNumber);
                                        }
                                }
                        }
                        Console.ReadLine ();
        }
示例#2
1
        public static void Main()
        {
            var client = new ATWSSoapClient ();
                        zoneInfo = client.getZoneInfo (auth_user_id);
                        Console.WriteLine ("ATWS Zone Info: \n\n" + "URL = " + zoneInfo.URL);

                        // Create the binding.
                        // must use BasicHttpBinding instead of WSHttpBinding
                        // otherwise a "SOAP header Action was not understood." is thrown.
                        BasicHttpBinding myBinding = new BasicHttpBinding ();
                        myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
                        myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

                        // Must set the size otherwise
                        //The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
                        myBinding.MaxReceivedMessageSize = 2147483647;

                        // Create the endpoint address.
                        EndpointAddress ea = new EndpointAddress (zoneInfo.URL);

                        client = new ATWSSoapClient (myBinding, ea);
                        client.ClientCredentials.UserName.UserName = auth_user_id;
                        client.ClientCredentials.UserName.Password = auth_user_password;

                        // query for any account. This should return all accounts since we are retreiving anything greater than 0.
                        StringBuilder sb = new StringBuilder ();
                        //sb.Append ("<queryxml><entity>Account</entity>").Append (System.Environment.NewLine);
                        //sb.Append ("<query><field>id<expression op=\"greaterthan\">0</expression></field></query>").Append (System.Environment.NewLine);
                        //sb.Append ("</queryxml>").Append (System.Environment.NewLine);
                        sb.Append("<queryxml><entity>Ticket</entity>").Append(System.Environment.NewLine);
                        sb.Append("<query>").Append(System.Environment.NewLine);
                        sb.Append("<field>TicketNumber<expression op=\"Equals\">T20130623.0113</expression>").Append(System.Environment.NewLine);
                        sb.Append("</field>").Append(System.Environment.NewLine);
                        //sb.Append("T20130623.0113").Append(System.Environment.NewLine);
                        sb.Append("</query></queryxml>").Append(System.Environment.NewLine);

                        Console.WriteLine("Output the query string: {0}", sb.ToString());
                        // have no clue what this does.
                        AutotaskIntegrations at_integrations = new AutotaskIntegrations ();

                        // this example will not handle the 500 results limitation.
                        // Autotask only returns up to 500 results in a response. if there are more you must query again for the next 500.
                        var r = client.query (at_integrations, sb.ToString ());
                        Console.WriteLine ("response ReturnCode = " + r.ReturnCode);
                        if (r.ReturnCode == 1) {
                                if (r.EntityResults.Length > 0) {
                                        foreach (var item in r.EntityResults) {
                                                //Account acct = (Account)item;
                                                //Console.WriteLine ("Account Name = " + acct.AccountName);
                                                //Console.WriteLine ("Account number = " + acct.AccountNumber);
                                            Ticket ticket = (Ticket)item;
                                            Console.WriteLine("Ticket Number =" + ticket.TicketNumber);
                                            Console.WriteLine("Ticket Note =" + ticket.Description);
                                            Console.WriteLine("Ticket Date =" + ticket.CreateDate);
                                            Console.WriteLine("Tictet Status =" + ticket.Status);
                                            ticket.Description = "Stephen Chen update this ticket at 1/16/2013 to make sure the update function is actually working correctly";

                                            //Ticket[] ticketarr = new Ticket[1];
                                            //ticketarr[0] = ticket;
                                            //var result = client.update(at_integrations, ticketarr);
                                            //Console.WriteLine("response return code = " + result.ReturnCode);
                                        }
                                }
                        }
                        Console.ReadLine ();
        }
示例#3
0
        public Client(string username, string password, ILogger logger = null)
        {
            _logger = logger ?? new NullLogger <Client>();
            var binding = new BasicHttpBinding
            {
                SendTimeout            = new TimeSpan(0, 0, 0, 0, 100000),
                OpenTimeout            = new TimeSpan(0, 0, 0, 0, 100000),
                MaxReceivedMessageSize = 10000,
                ReaderQuotas           =
                {
                    MaxStringContentLength = 10000,
                    MaxDepth       = 10000,
                    MaxArrayLength = 10000
                },
                Security = new BasicHttpSecurity
                {
                    Mode      = BasicHttpSecurityMode.Transport,
                    Transport = new HttpTransportSecurity
                    {
                        ClientCredentialType = HttpClientCredentialType.None,
                        ProxyCredentialType  = HttpProxyCredentialType.None,
                    }
                }
            };
            var endpoint = new EndpointAddress("https://webservices1.autotask.net/ATServices/1.5/atws.asmx");

            _autoTaskClient = new ATWSSoapClient(binding, endpoint);
            var zoneInfo = _autoTaskClient.getZoneInfoAsync(new getZoneInfoRequest(username)).GetAwaiter().GetResult();

            // Create the binding.
            // must use BasicHttpBinding instead of WSHttpBinding
            // otherwise a "SOAP header Action was not understood." is thrown.
            var myBinding = new BasicHttpBinding
            {
                Security =
                {
                    Mode      = BasicHttpSecurityMode.Transport,
                    Transport = { ClientCredentialType = HttpClientCredentialType.Basic }
                },
                MaxReceivedMessageSize = 2147483647
            };

            // Must set the size otherwise
            //The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.

            // Create the endpoint address.
            var ea = new EndpointAddress(zoneInfo.getZoneInfoResult.URL);

            _autoTaskClient.Close();
            _autoTaskClient = new ATWSSoapClient(myBinding, ea);

            AutoTaskLogger = new AutoTaskLogger(_logger);
            _autoTaskClient.Endpoint.EndpointBehaviors.Add(AutoTaskLogger);

            _autoTaskClient.ClientCredentials.UserName.UserName = username;
            _autoTaskClient.ClientCredentials.UserName.Password = password;

            // have no clue what this does.
            _autotaskIntegrations = new AutotaskIntegrations();
        }
        public static void Main()
        {
            // demonstrates how to intellegently get the zone information.
            // autotask will tell you which zone URL to use based on the userID
            var client = new ATWSSoapClient();

            zoneInfo = client.getZoneInfo(auth_user_id);
            Console.WriteLine("ATWS Zone Info: \n\n"
                              + "URL = " + zoneInfo.URL);

            // Create the binding.
            // must use BasicHttpBinding instead of WSHttpBinding
            // otherwise a "SOAP header Action was not understood." is thrown.
            BasicHttpBinding myBinding = new BasicHttpBinding();

            myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
            myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

            // Must set the size otherwise
            //The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
            myBinding.MaxReceivedMessageSize = 2147483647;

            // Create the endpoint address.
            EndpointAddress ea = new EndpointAddress(zoneInfo.URL);

            client = new ATWSSoapClient(myBinding, ea);
            client.ClientCredentials.UserName.UserName = auth_user_id;
            client.ClientCredentials.UserName.Password = auth_user_password;

            // query for any account. This should return all accounts since we are retreiving anything greater than 0.
            StringBuilder sb = new StringBuilder();

            sb.Append("<queryxml><entity>Account</entity>").Append(System.Environment.NewLine);
            sb.Append("<query><field>id<expression op=\"greaterthan\">0</expression></field></query>").Append(System.Environment.NewLine);
            sb.Append("</queryxml>").Append(System.Environment.NewLine);

            // have no clue what this does.
            AutotaskIntegrations at_integrations = new AutotaskIntegrations();

            // this example will not handle the 500 results limitation.
            // Autotask only returns up to 500 results in a response. if there are more you must query again for the next 500.
            var r = client.query(at_integrations, sb.ToString());

            Console.WriteLine("response ReturnCode = " + r.ReturnCode);
            if (r.ReturnCode == 1)
            {
                if (r.EntityResults.Length > 0)
                {
                    foreach (var item in r.EntityResults)
                    {
                        Account acct = (Account)item;
                        Console.WriteLine("Account Name = " + acct.AccountName);
                        Console.WriteLine("Account number = " + acct.AccountNumber);
                    }
                }
            }
            Console.ReadLine();
        }
        private async Task <ATWSSoap> GetClientAsync()
        {
            if (_clientDoNotUseDirectly != null)
            {
                return(_clientDoNotUseDirectly);
            }

            var client   = new ATWSSoapClient();
            var zoneInfo = await client.getZoneInfoAsync(new getZoneInfoRequest(_configuration.Username)).ConfigureAwait(false);

            // Create the binding.
            // must use BasicHttpBinding instead of WSHttpBinding
            // otherwise a "SOAP header Action was not understood." is thrown.
            var myBinding = new BasicHttpBinding();

            myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
            myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

            // Must set the size otherwise
            //The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
            myBinding.MaxReceivedMessageSize = 2147483647;

            // Create the endpoint address.
            var ea = new EndpointAddress(zoneInfo.getZoneInfoResult.URL);

            client.Close();

            client = new ATWSSoapClient(myBinding, ea);
            client.ClientCredentials.UserName.UserName = _configuration.Username;
            client.ClientCredentials.UserName.Password = _configuration.Password;

            //Autotask is implementing mandatory tracking identifiers for
            //Integration developers selling or offering integrations into the Autotask channel.

            _autotaskIntegrations = new AutotaskIntegrations {
                IntegrationCode = _configuration.IntegrationCode
            };
            return(_clientDoNotUseDirectly = client);
        }
示例#6
0
        private async Task <ATWSSoapClient> GetATWSSoapClientAsync(CancellationToken cancellationToken)
        {
            if (_autoTaskClient != null)
            {
                return(_autoTaskClient);
            }

            var binding = new BasicHttpBinding
            {
                SendTimeout            = new TimeSpan(0, 0, 0, 0, _clientOptions.SendTimeoutMs),
                OpenTimeout            = new TimeSpan(0, 0, 0, 0, _clientOptions.OpenTimeoutMs),
                MaxReceivedMessageSize = 10000,
                ReaderQuotas           =
                {
                    MaxStringContentLength = 10000,
                    MaxDepth       = 10000,
                    MaxArrayLength = 10000
                },
                Security = new BasicHttpSecurity
                {
                    Mode      = BasicHttpSecurityMode.Transport,
                    Transport = new HttpTransportSecurity
                    {
                        ClientCredentialType = HttpClientCredentialType.None,
                        ProxyCredentialType  = HttpProxyCredentialType.None,
                    }
                }
            };

            string endpointAddressUrl;

            if (_clientOptions.ServerId is null)
            {
                var endpoint = new EndpointAddress("https://webservices.autotask.net/ATServices/1.6/atws.asmx");
                using var zoneInfoAutoTaskClient = new ATWSSoapClient(binding, endpoint);

                var zoneInfo = await zoneInfoAutoTaskClient
                               .getZoneInfoAsync(new getZoneInfoRequest(_username))
                               .WithCancellation(cancellationToken)
                               .ConfigureAwait(false);

                zoneInfoAutoTaskClient.Close();
                endpointAddressUrl = zoneInfo.getZoneInfoResult.URL;
            }
            else
            {
                endpointAddressUrl = $"https://webservices{_clientOptions.ServerId}.autotask.net/ATServices/1.6/atws.asmx";
            }

            // Create the binding.
            // must use BasicHttpBinding instead of WSHttpBinding
            // otherwise a "SOAP header Action was not understood." is thrown.
            var myBinding = new BasicHttpBinding
            {
                Security =
                {
                    Mode      = BasicHttpSecurityMode.Transport,
                    Transport = { ClientCredentialType = HttpClientCredentialType.Basic }
                },
                MaxReceivedMessageSize = 2147483647
            };

            // Must set the size otherwise
            //The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.

            // Create the endpoint address.
            var ea = new EndpointAddress(endpointAddressUrl);

            var autoTaskClient = new ATWSSoapClient(myBinding, ea);

            autoTaskClient.Endpoint.EndpointBehaviors.Add(AutoTaskLogger);
            autoTaskClient.ClientCredentials.UserName.UserName = _username;
            autoTaskClient.ClientCredentials.UserName.Password = _password;
            return(_autoTaskClient = autoTaskClient);
        }