Salesforce: Use .NET C# To Create a Connection to Salesforce and Pull Contacts

1/31/2015 9:37:20 PM

The following code connects to a Salesforce account using the Salesforce WSDL Web Service. This example assumes you have added the Salesforce Service reference and names that reference MySalesforce.

@{
    //get response values
    string sessionId = "";
    string serverUrl = "";

    //use default binding and address from app.config
    using (Web_MVC_5.MySalesforce.SoapClient loginClient = new Web_MVC_5.MySalesforce.SoapClient("Soap"))
    {
        //set account password and account token variables
        string username = "myuser@example.com";
        string password = "MyExamplePassword";
        string securityToken = "MToken";

        //call Login operation from Enterprise WSDL
        Web_MVC_5.MySalesforce.LoginResult result = loginClient.login(null, username, password + securityToken);

        //get response values
        sessionId = result.sessionId;
        serverUrl = result.serverUrl;

        //print response values
        System.Diagnostics.Debug.WriteLine(string.Format("The session ID is {0} and server URL is {1}", sessionId, serverUrl));       
    }


    //set query endpoint to value returned by login request
    System.ServiceModel.EndpointAddress apiAddr = new System.ServiceModel.EndpointAddress(serverUrl);

    //instantiate session header object and set session id
    Web_MVC_5.MySalesforce.SessionHeader header = new Web_MVC_5.MySalesforce.SessionHeader();
    header.sessionId = sessionId;

    //create service client to call API endpoint
    using (Web_MVC_5.MySalesforce.SoapClient queryClient = new Web_MVC_5.MySalesforce.SoapClient("Soap", apiAddr))
    {
        //create SOQL query statement
        string query = "";

		//query by email
        query = "SELECT Id, Name FROM Contact where email = 'test@example.com'";
		
		//query by contactId
        query = "SELECT Id, Name FROM Contact where Id = 'A_SALESFORCE_CONTACTID'";

        Web_MVC_5.MySalesforce.QueryResult queryResult = null;

        queryClient.query(
            header, //sessionheader
            null, //queryoptions
            null, //mruheader
            null, //packageversionheader
            query, //SOQL query
            out queryResult
         );
        
        //results
        if (queryResult.records != null)
        {            
            foreach (var record in queryResult.records)
            {
                var contact = (Web_MVC_5.MySalesforce.Contact)record;
            
                System.Diagnostics.Debug.WriteLine(string.Format("Contact Name: {0}", contact.Name));
            }
        }
    }
}