2014-06-04 7 views
1

Удивительно низкий уровень doco, когда дело доходит до отдыха api. Может ли кто-нибудь дать мне рабочий пример вызовов Sugar CRM REST с использованием C#?Sugar CRM 6.5.14 - вызов API REST с C#

Я испытывал SugarSharp, но это просто перечень услуг и не подходя с данными (нуль)

ответ

1

Цените это старый вопрос, но для кого-либо еще, что попадается ему, мне потребовалось некоторое время, чтобы получить его все, кто работает с созданием и обновлением отношений, является самым сложным для понимания.

Вот часть класса обертки, которую я написал вокруг v4_1 отдыха апи, надеюсь, что это помогает: -

public void Login() 
    { 
     object loginData = new 
     { 
      user_auth = new 
      { 
       user_name = Username, 
       password = CalculateMD5Hash(Password) 
      } 
     }; 

     string jsonData = CreateFormattedPostRequest("login", loginData); 

     var request = GetRestRequest(jsonData, "POST"); 

     var loginResponse = GetRestResponseByType<LoginResponse>(request); 

     if (string.IsNullOrEmpty(loginResponse.id)) 
     { 
      throw new SugarException(string.Concat("Authorisation Failed for user: {0}, did not retrieve access token", Username)); 
     } 

     SessionID = loginResponse.id; 
    } 

Формат запроса: -

 private string CreateFormattedPostRequest(string method, object data) 
    { 
     StringBuilder buffer = new StringBuilder(); 

     using (StringWriter writer = new StringWriter(buffer)) 
     { 
      serializer.Serialize(data, buffer); 
     } 

     string result = "method=" + method; 
     result += "&input_type=JSON&response_type=JSON&rest_data=" + buffer.ToString(); 

     return result; 
    } 

И, наконец, получить ответ: -

private object GetRestResponseAsObject(HttpWebRequest request) 
    { 
     using (var response = (HttpWebResponse)request.GetResponse()) 
     { 
      using (Stream input = response.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(input); 
       string buffer = reader.ReadToEnd(); 
       var responseObj = serializer.DeserializeObject(buffer); 

       return responseObj; 
      } 
     } 
    } 

А вот пример вызова метода set_entry: -

 /// <summary> 
    /// Creates or Updates a single bean, for update ensure that the name_value_list contains the ID of the record 
    /// name_value_lists - Dictionary where the keys of the are the SugarBean attributes (columns), the values of the array are the values the attributes should have. 
    /// </summary> 
    /// <param name="module">Module to update i.e Account</param> 
    /// <param name="record">key value pair object of record, include ID for update</param> 
    /// <returns>Returns the updated or created Bean ID</returns> 
    public string CreateUpdateBean(string module, object record) 
    { 
     var parameters = new Dictionary<string, object>(); 

     parameters.Add("session", SessionID); 
     parameters.Add("module_name", module); 
     parameters.Add("name_value_list", record); 
     parameters.Add("track_view", false); 

     string jsonData = CreateFormattedPostRequest("set_entry", parameters); 

     var request = GetRestRequest(jsonData, "POST"); 

     var result = GetRestResponseByType<object>(request); 

     return result.ToString(); 

    } 
0

Для вызова REST API SugarCRM/SuiteCRM с C#, вы можете использовать SugarRestSharp

Пример для создания учетной записи:

var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password); 

Account insertAccount = AccountsModule.GetTestAccount(); 

// -------------------Create Account------------------- 
SugarRestResponse response = AccountsModule.CreateAccount(client, insertAccount); 

Assert.NotNull(response); 
Assert.Equal(response.StatusCode, HttpStatusCode.OK); 

string insertId = (response.Data == null) ? string.Empty : response.Data.ToString(); 

Assert.NotNull(insertId); 
Assert.NotEmpty(insertId); 
// -------------------End Create Account------------------- 
Смежные вопросы