是否有可用于Salesforce REST Api的c#包装器?

时间:2012-02-29 10:17:03

标签: c# api rest salesforce wrapper

我想将SalesForce信息集成到.net MVC应用程序中。

就我所见,SalesForce网站上的样本都是SOAP,或者有SalesForce ADO.NET数据提供者。

http://wiki.developerforce.com/page/Web_Services_API#.NET

感谢。

7 个答案:

答案 0 :(得分:8)

salesforce的.NET工具包是announced

“Force.com Toolkit for .NET为.NET开发人员提供了一种使用本机库与Force.com REST API进行交互的简便方法。”

https://github.com/developerforce/Force.com-Toolkit-for-NET/

答案 1 :(得分:7)

如果您正在寻找Salesforce的REST API客户端库,请查看SalesforceSharp

它支持从REST API创建,更新,删除和查询记录。

创建

client.Create("Account", 
   new { Name = "name created", Description = "description created" }));

<强>更新

client.Update("Account", "<record id>", 
   new { Description = "description updated" }));

删除

client.Delete("Account", "<ID">);

<强>查询

var records = client.Query<Account>("SELECT id, name, description FROM Account");

现在它支持用户名 - 密码身份验证流程,但可以创建和注入其他流程(Web服务器和用户代理)。

答案 2 :(得分:3)

  

我真的希望有一些可以解析WebResponse的东西   进入表示返回的SF资源的类,并且具有可靠性   错误处理 - 繁琐的事情:)

这是存在的 - 它被称为SOAP API :)但是,严肃地说,如果你正在进行服务器端集成并且想要类型生成的类和可靠的错误处理,那么SOAP就是你的小马。

答案 3 :(得分:3)

我使用RestSharp来简化调用并对对象进行反序列化,但您仍然需要处理所有Salesforce错误代码。它内置了一些OAuth功能,但我使用的版本(大约2个月)不能很好地支持OAuth 2。它仍然是一种痛苦,但如果您要提取大量数据,那还是值得的。

答案 4 :(得分:2)

好吧,不是我所知道的。但是,根据您是否要使用客户端或服务器端,您使用javascript方法(如restapi中所述)或简单地System.Net.WebRequest用于服务器端,这无关紧要。

检查Dan's .NET blog

答案 5 :(得分:0)

以下是使用密码工作流程的示例代码。它获取访问令牌并查询API:

public static string Login()
{
    string responseJsonString = string.Empty;
    StringBuilder str = new StringBuilder();
    str.AppendFormat("{0}?grant_type=password&client_id={1}&client_secret={2}&username={3}&password={4}"
                     , LoginOAuthUrl, ClientID, ClientSecret, ClientUserName, ClientPassword);
    // Request token
    try
    {
        HttpWebRequest request = WebRequest.Create(str.ToString()) as HttpWebRequest;

        if (request != null)
        {
            request.Method = "POST";
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    // Get the "access_token" and "instance_url" from the response.
                    // Convert the JSON response into a token object


                    // Here we get the response as a stream.
                    using (StreamReader responseStream = new StreamReader(response.GetResponseStream()))
                    {
                        responseJsonString = responseStream.ReadToEnd();
                        // Deserialize JSON response into an Object.
                        JsonValue value = JsonValue.Parse(responseJsonString);
                        JsonObject responseObject = value as JsonObject;
                        AccessToken = (string)responseObject["access_token"];
                        InstanceUrl = (string)responseObject["instance_url"];
                        return "We have an access token: " + AccessToken + "\n" + "Using instance " + InstanceUrl + "\n\n";
                    }
                }
            }
        }
        return responseJsonString;
    }
    catch (Exception ex)
    {
        throw new Exception(string.Format("Unable to login to salesforce: {0}", str), ex);
    }
}

public static string Query()
{            
    string RequestUrl = InstanceUrl + "/services/data/v28.0/query";
    string queryParam = "q=" + QUERY;
    // Read the REST resources
    string responseJsonString = HttpGet(RequestUrl, queryParam);
    return responseJsonString;
}

public static string HttpGet(string URI, string Parameters)
{
    // Add parameters to the URI
    string requestUri = URI + "?" + Parameters;
    System.Net.WebRequest req = System.Net.WebRequest.Create(requestUri);
    req.Method = "GET";
    req.Headers.Add("Authorization: OAuth " + AccessToken);

    // Do the GET request
    System.Net.WebResponse resp = req.GetResponse();
    if (resp == null) return null;
    System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
    return sr.ReadToEnd().Trim();
}

答案 6 :(得分:0)

Reinforce尝试将Salesforce的rest API建模为一组接口。可以使用Reinforce.HttpClientFactory或使用RestEase手动将接口设置为客户端。

https://github.com/deesejohn/Reinforce