如何从.net使用SalesForce Webservice

时间:2016-06-10 10:19:40

标签: .net salesforce

我试图从.net使用SalesForce Web服务。我对SalesForce很陌生,对此并不太了解。如果有人可以一步一步地帮助我如何做到这一点将非常有帮助。以下是我已经完成的步骤,我不确定我错过了什么。请帮忙。

  1. SalesForce WebService代码:

    global class SampleWebService
    {
    webservice static String sayHello(String Name)
    {
    return 'Hello ' + Name + ', welcome to Salesforce WebService.';
    }
    }

  2. 生成WSDL文件。

  3. 创建了.net项目并添加了该wsdl的Web引用。

  4. C#代码:

    使用System;
    使用System.Collections.Generic;
    使用System.Linq;
    使用System.Web;
    使用System.Web.UI;
    使用System.Web.UI.WebControls;

    命名空间SalesForceWebService
    {
        public partial class主页:System.Web.UI.Page
        {
            SalesForceService.SampleWebServiceService objService = new SalesForceService.SampleWebServiceService();

        protected void Page_Load(object sender, EventArgs e)  
        {  
            lblHello.Text = objService.sayHello("ABC");  
        }  
    }  
    

    }`

1 个答案:

答案 0 :(得分:0)

以下是我使用Enterprise WSDL连接Salesforce所执行的步骤

  1. 在salesforce环境中生成企业WSDL,如下所示 设置 - >开发 - > API - >生成企业WSDL。 将该网页另存为XML。

  2. 在Visual Studio中,右键单击解决方案资源管理器中项目的引用,并将保存的XML文件作为服务引用添加到项目中。

  3. 以类似的方式为您的apex类生成WSDL。并将其作为项目的服务参考附加。 (如果您将任何顶点类暴露为Web服务,否则请执行此步骤)

  4. 开始编写代码。
  5. 在这个程序中,我试图调用用Apex编写的web服务方法, 它根据唯一ID获取用户对象并更新字段。

        using ConsoleApplication1.Salesforce;
        using System.Web.Services.Protocols;
        namespace ConsoleApplication1
        {
        class Program
        {
            public static SforceService binding;
            public static ConsoleApplication1.ApexServiceName.ApexClassService classBinding;
            static void Main(string[] args)
            {
                binding = new SforceService();
                LoginResult lr = null;
                binding.Timeout = 120 * 60000;
                try
                {
                    lr = binding.login(username,password);
                    Console.WriteLine("login success");
                }
                catch (SoapException ex)
                {
                    Console.WriteLine(ex.Message);
                }
    
        classBinding = new ConsoleApplication1.ApexServiceName.YOUR_APEXCLASS_NAME();
        binding.Url = lr.serverUrl; //I1
        binding.SessionHeaderValue = new SessionHeader(); 
        binding.SessionHeaderValue.sessionId = lr.sessionId;  //I2
        classBinding.SessionHeaderValue = new ConsoleApplication1.ApexClassService.SessionHeader();
        classBinding.SessionHeaderValue.sessionId = lr.sessionId;
        ConsoleApplication1.ApexServiceName.User Appusr = classBinding.getUserById("1234567");  //I3
        Appusr.FirstName = "MurthyFYI"; //I4
        Boolean? result = classBinding.updateUser(Appusr); //I3
        binding.logout();
        }
        }
        }
    

    I1)登录结果包含为您的组织提供服务的虚拟服务器实例的端点。设置绑定到此端点的URL。

    I2)从登录结果中获取会话ID,并将其设置为将用于所有后续呼叫的会话标头。

    I3)调用已为其生成WSDL的Apex类的Web服务方法。

    I4)更新用户对象上的字段。

    有关详细信息,请参阅我的博客@ http://murthyvvr.blogspot.in/2013/11/calling-salesforce-webservice-from-c.html中的帖子 我希望这会有所帮助。