我试图从.net使用SalesForce Web服务。我对SalesForce很陌生,对此并不太了解。如果有人可以一步一步地帮助我如何做到这一点将非常有帮助。以下是我已经完成的步骤,我不确定我错过了什么。请帮忙。
SalesForce WebService代码:
global class SampleWebService
{
webservice static String sayHello(String Name)
{
return 'Hello ' + Name + ', welcome to Salesforce WebService.';
}
}
生成WSDL文件。
创建了.net项目并添加了该wsdl的Web引用。
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");
}
}
}`
答案 0 :(得分:0)
以下是我使用Enterprise WSDL连接Salesforce所执行的步骤
在salesforce环境中生成企业WSDL,如下所示 设置 - >开发 - > API - >生成企业WSDL。 将该网页另存为XML。
在Visual Studio中,右键单击解决方案资源管理器中项目的引用,并将保存的XML文件作为服务引用添加到项目中。
以类似的方式为您的apex类生成WSDL。并将其作为项目的服务参考附加。 (如果您将任何顶点类暴露为Web服务,否则请执行此步骤)
在这个程序中,我试图调用用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中的帖子 我希望这会有所帮助。