Существует ли оболочка c # для Salesforce REST Api? - PullRequest
11 голосов
/ 29 февраля 2012

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

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

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

Спасибо.

Ответы [ 6 ]

8 голосов
/ 11 февраля 2014

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

«Инструментарий Force.com для .NET предоставляет разработчикам .NET простой способ взаимодействия с API REST Force.com с использованием собственных библиотек».

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

7 голосов
/ 10 сентября 2013

Если вы ищете клиентскую библиотеку REST API Salesforce, взгляните на SalesforceSharp .

Он поддерживает создание, обновление, удаление и запрос записей из API REST.

Создать

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");

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

3 голосов
/ 07 марта 2012

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

3 голосов
/ 01 марта 2012

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

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

2 голосов
/ 29 февраля 2012

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

Проверка Блог Дэна .NET

0 голосов
/ 28 августа 2013

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