How to call web Services in C#

I am calling web services and returning into list but I am not able to do same.
I want to bind drop down list with web services.

I have added INITIATORS_LIST class which contain all field which I want to bind in Drop down list like Companies, Countries, Divisions, Location… So on. How can I achieve any alternate method may I accept please ?

Sample JSON Data

{"Companies":[{"ACTIVE":true,"COMPANY_ID":1,"CompanyCode":"1000","CompanyName":"Almarai Company","CountryCode":"SAU","CountryName":"Saudi Arabia","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"ACTIVE":true,"COMPANY_ID":6,"CompanyCode":"4000","CompanyName":"Almarai Co. Bahrain WLL","CountryCode":"BAH","CountryName":"Bahrain","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"ACTIVE":true,"COMPANY_ID":8,"CompanyCode":"5000","CompanyName":"Bustan Al Khaleej Est.","CountryCode":"UAE","CountryName":"United Arab Emirates","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"ACTIVE":true,"COMPANY_ID":11,"CompanyCode":"5200","CompanyName":"ALMARAI EMIRATES COMPANY L.L.C","CountryCode":"UAE","CountryName":"United Arab Emirates","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"ACTIVE":true,"COMPANY_ID":15,"CompanyCode":"6000","CompanyName":"Al Kharafi Brothers","CountryCode":"KWT","CountryName":"Kuwait","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"ACTIVE":true,"COMPANY_ID":18,"CompanyCode":"7000","CompanyName":"Arabian Planets Company","CountryCode":"OMN","CountryName":"Oman","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"}],"Countries":[{"COUNTRY_ACTIVE":true,"COUNTRY_M_ID":1,"CountryCode":"SAU","CountryName":"Saudi Arabia","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"COUNTRY_ACTIVE":true,"COUNTRY_M_ID":3,"CountryCode":"UAE","CountryName":"United Arab Emirates","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"COUNTRY_ACTIVE":true,"COUNTRY_M_ID":4,"CountryCode":"BAH","CountryName":"Bahrain","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"COUNTRY_ACTIVE":true,"COUNTRY_M_ID":5,"CountryCode":"OMN","CountryName":"Oman","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"},{"COUNTRY_ACTIVE":true,"COUNTRY_M_ID":7,"CountryCode":"KWT","CountryName":"Kuwait","DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales"}],"Divisions":[{"ACTIVE":true,"CompanyCode":null,"CompanyName":null,"CountryCode":null,"CountryName":null,"DB_CONNECTION_STRING":null,"DivisionCode":"1000","DivisionId":1,"DivisionName":"Sales","WEB_URL":null}],"Locations":

ALM_COUNTRY_M class:
 public partial class ALM_COUNTRY_M : object, System.Runtime.Serialization.IExtensibleDataObject, 
        System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool COUNTRY_ACTIVEField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int COUNTRY_M_IDField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string CountryCodeField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string CountryNameField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string DivisionCodeField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int DivisionIdField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string DivisionNameField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool COUNTRY_ACTIVE {
            get {
                return this.COUNTRY_ACTIVEField;
            }
            set {
                if ((this.COUNTRY_ACTIVEField.Equals(value) != true)) {
                    this.COUNTRY_ACTIVEField = value;
                    this.RaisePropertyChanged("COUNTRY_ACTIVE");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int COUNTRY_M_ID {
            get {
                return this.COUNTRY_M_IDField;
            }
            set {
                if ((this.COUNTRY_M_IDField.Equals(value) != true)) {
                    this.COUNTRY_M_IDField = value;
                    this.RaisePropertyChanged("COUNTRY_M_ID");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string CountryCode {
            get {
                return this.CountryCodeField;
            }
            set {
                if ((object.ReferenceEquals(this.CountryCodeField, value) != true)) {
                    this.CountryCodeField = value;
                    this.RaisePropertyChanged("CountryCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string CountryName {
            get {
                return this.CountryNameField;
            }
            set {
                if ((object.ReferenceEquals(this.CountryNameField, value) != true)) {
                    this.CountryNameField = value;
                    this.RaisePropertyChanged("CountryName");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string DivisionCode {
            get {
                return this.DivisionCodeField;
            }
            set {
                if ((object.ReferenceEquals(this.DivisionCodeField, value) != true)) {
                    this.DivisionCodeField = value;
                    this.RaisePropertyChanged("DivisionCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int DivisionId {
            get {
                return this.DivisionIdField;
            }
            set {
                if ((this.DivisionIdField.Equals(value) != true)) {
                    this.DivisionIdField = value;
                    this.RaisePropertyChanged("DivisionId");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string DivisionName {
            get {
                return this.DivisionNameField;
            }
            set {
                if ((object.ReferenceEquals(this.DivisionNameField, value) != true)) {
                    this.DivisionNameField = value;
                    this.RaisePropertyChanged("DivisionName");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

INITIATORS_LIST Class:
public partial class INITIATORS_LIST : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M[] CompaniesField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Almarai.GiveAway.GetInitiatorList.ALM_COUNTRY_M[] CountriesField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Almarai.GiveAway.GetInitiatorList.ALM_DIVISION_M[] DivisionsField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Almarai.GiveAway.GetInitiatorList.LOCATION[] LocationsField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Almarai.GiveAway.GetInitiatorList.REGION[] RegionsField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Almarai.GiveAway.GetInitiatorList.ALM_WKFLW_TYPE_M[] WorkflowTypesField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M[] Companies {
            get {
                return this.CompaniesField;
            }
            set {
                if ((object.ReferenceEquals(this.CompaniesField, value) != true)) {
                    this.CompaniesField = value;
                    this.RaisePropertyChanged("Companies");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Almarai.GiveAway.GetInitiatorList.ALM_COUNTRY_M[] Countries {
            get {
                return this.CountriesField;
            }
            set {
                if ((object.ReferenceEquals(this.CountriesField, value) != true)) {
                    this.CountriesField = value;
                    this.RaisePropertyChanged("Countries");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Almarai.GiveAway.GetInitiatorList.ALM_DIVISION_M[] Divisions {
            get {
                return this.DivisionsField;
            }
            set {
                if ((object.ReferenceEquals(this.DivisionsField, value) != true)) {
                    this.DivisionsField = value;
                    this.RaisePropertyChanged("Divisions");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Almarai.GiveAway.GetInitiatorList.LOCATION[] Locations {
            get {
                return this.LocationsField;
            }
            set {
                if ((object.ReferenceEquals(this.LocationsField, value) != true)) {
                    this.LocationsField = value;
                    this.RaisePropertyChanged("Locations");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Almarai.GiveAway.GetInitiatorList.REGION[] Regions {
            get {
                return this.RegionsField;
            }
            set {
                if ((object.ReferenceEquals(this.RegionsField, value) != true)) {
                    this.RegionsField = value;
                    this.RaisePropertyChanged("Regions");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Almarai.GiveAway.GetInitiatorList.ALM_WKFLW_TYPE_M[] WorkflowTypes {
            get {
                return this.WorkflowTypesField;
            }
            set {
                if ((object.ReferenceEquals(this.WorkflowTypesField, value) != true)) {
                    this.WorkflowTypesField = value;
                    this.RaisePropertyChanged("WorkflowTypes");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

Reference:
public Almarai.GiveAway.GetInitiatorList.INITIATORS_LIST GetInitiatorsListByWorkflow(string userId, string WorkflowTypeCode) {
            return base.Channel.GetInitiatorsListByWorkflow(userId, WorkflowTypeCode);
        }

[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMasterDataService/GetInitiatorsListByWorkflow", ReplyAction="http://tempuri.org/IMasterDataService/GetInitiatorsListByWorkflowResponse")]
        [System.ServiceModel.FaultContractAttribute(typeof(Almarai.GiveAway.GetInitiatorList.CustomFaultException), Action="http://tempuri.org/IMasterDataService/GetInitiatorsListByWorkflowCustomFaultExcep" +
            "tionFault", Name="CustomFaultException", Namespace="http://schemas.datacontract.org/2004/07/Almarai.Web.Services.MasterData")]
        Almarai.GiveAway.GetInitiatorList.INITIATORS_LIST GetInitiatorsListByWorkflow(string userId, string WorkflowTypeCode);

Country class: (Should I change this class for Each different field like Company, Country, Region….so on)
public class CountryList
        {
            public CountryList(INITIATORS_LIST data)
            {
                ExtensionData = data;
            }

            public INITIATORS_LIST ExtensionData { get; internal set; }
        }

My Method: (How should I modify my method)
 [WebMethod]
        public static List<CountryList> GetCountriesName(string UserID)
        {
            GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
            string userid = "approver01";
            string work = "4";
            List<CountryList> countries = oClient.GetInitiatorsListByWorkflow(userid, work); // Error on this line 

            foreach (Country c in countries)
            {
                lst.Add(c.Name);
            }

            return lst; //Error on this line
        }

I am not able to Add into list is there other approch ?
I know due to return type am not able to do but

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

The GetInitiatorsListByWorkflow method returns a Almarai.GiveAway.GetInitiatorList.INITIATORS_LIST object, not a List<CountryList>. Likewise your GetCountriesName method returns List<CountryList>, not whatever the type of your (undefined in the code shown) lst variable is. That’s why you have errors – you can’t just randomly assign objects to variables which are the wrong type.

Anyway it seems that for your countries list you actually want to use two properties from the ALM_COUNTRY_M class. The INITIATORS_LIST contains an array of objects of that type.

So what you really need to do is get the array of ALM_COUNTRY_M objects from the INITIATORS_LIST returned by the GetInitiatorsListByWorkflow method, and loop through them, and for each one, create an equivalent instance of CountryList, set its properties using the values in the ALM_COUNTRY_M object, and add that to the list to be returned.

Something like this (untested):

[WebMethod]
public static List<CountryList> GetCountriesName(string UserID)
{
    GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
    string userid = "approver01";
    string work = "4";

    Almarai.GiveAway.GetInitiatorList.INITIATORS_LIST initiatorsList = oClient.GetInitiatorsListByWorkflow(userid, work); //get data from webservice
    Almarai.GiveAway.GetInitiatorList.ALM_COUNTRY_M[] countryMList = initiatorsList.Countries; //get list of countries from the data returned by the webservice

    List<CountryList> countries = new List<CountryList>(); //create an empty list which will be populated with data from the webservice

    //loop through list of countries returned from webservice
    foreach (Almarai.GiveAway.GetInitiatorList.ALM_COUNTRY_M country in countryMList)
    {
       //add new instance of CountryList using fields from the webservice class
       countries.Add(new CountryList() {
         CountryCode = country.CountryCode,
         CountryName = country.CountryName
       });
    }

    return countries; //return the completed list of countries
}

The CountryList class should be defined more like this:
public class CountryList
{
    public string CountryCode { get; set; }
    public string CountryName { get; set; }

}

P.S. It would be more meaningful to rename the CountryList class to Country, since each object only represents a single country. It’s the List<> part which defines a list. But that’s a separate issue for you to decide.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x