Существует ли оболочка С# для Salesforce REST Api?

Я хотел бы интегрировать информацию SalesForce в приложение .net MVC.

Образцы на сайте SalesForce - это все SOAP, насколько я могу видеть, или, альтернативно, поставщик данных SalesForce ADO.NET.

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

Спасибо.

Ответ 1

Набор инструментов .NET был объявлен продавцом.

"Force.com Toolkit для .NET предоставляет простой способ для разработчиков .NET взаимодействовать с API-интерфейсом Force.com REST с использованием собственных библиотек".

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

Ответ 2

Если вы ищете клиентскую библиотеку 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">);

Query

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

В настоящее время он поддерживает поток аутентификации имени пользователя и пароля, но другие потоки (веб-сервер и пользовательский агент) могут быть созданы и введены.

Ответ 3

Я действительно надеялся на то, что будет анализировать WebResponse в классы, представляющие возвращенные ресурсы SF, и имеют обработка ошибок - утомительный материал:)

Это существует - он называется SOAP API:) Серьезно, хотя, если вы выполняете серверную интеграцию и хотите вводить сгенерированные классы и сплошную обработку ошибок, SOAP - это ваш пони.

Ответ 4

Я использую RestSharp, чтобы упростить вызовы и де-сериализовать объекты, но вам все равно придется обрабатывать все коды ошибок Salesforce. Он также имеет встроенную функциональность OAuth, но версия, которую я использую (около 2 месяцев), не очень хорошо поддерживает OAuth 2. Это все еще боль, но стоит того, если вы тянете много данных.

Ответ 5

ну, не то, что я знаю. Ничего особенного, хотя, в зависимости от того, хотите ли вы использовать его на стороне клиента или на стороне сервера, вы используете подход javascript (как описано в restapi) или просто System.Net.WebRequest для серверной части.

Отметьте блог Dan.NET

Ответ 6

Вот пример кода с использованием рабочего процесса паролей. Он получает токен доступа и запрашивает 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();
}

Ответ 7

Reinforce пытается смоделировать Salesforce rest API как набор интерфейсов. Интерфейсы могут быть превращены в клиентов с помощью Reinforce.HttpClientFactory или вручную с RestEase.

https://github.com/deesejohn/Reinforce