Существует ли оболочка С# для 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