C# Sugar CRM 6.5.14-使用C调用REST API#
在RESTAPI方面,doco的支持率低得惊人。有谁能给我一个使用C#的Sugar CRM REST调用的工作示例吗C# Sugar CRM 6.5.14-使用C调用REST API#,c#,sugarcrm,C#,Sugarcrm,在RESTAPI方面,doco的支持率低得惊人。有谁能给我一个使用C#的Sugar CRM REST调用的工作示例吗 我试过SugarSharp,但它只是列出了服务,没有提供数据(空)请注意,这是一个老问题,但对于遇到它的任何人来说,我花了一段时间来完成创建和更新关系的工作,这是最难理解的 下面是我围绕v4_1 rest api编写的包装类的一部分,希望它能有所帮助:- public void Login() { object loginData = new
我试过SugarSharp,但它只是列出了服务,没有提供数据(空)请注意,这是一个老问题,但对于遇到它的任何人来说,我花了一段时间来完成创建和更新关系的工作,这是最难理解的 下面是我围绕v4_1 rest api编写的包装类的一部分,希望它能有所帮助:-
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 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();
}
//
///创建或更新单个bean,以确保name\u value\u列表包含记录的ID
///name_value_list-Dictionary,其中的键是SugarBean属性(列),数组的值是属性应该具有的值。
///
///要更新的模块,即帐户
///记录的键值对对象,包括用于更新的ID
///返回更新或创建的Bean ID
公共字符串CreateUpdateBean(字符串模块、对象记录)
{
var参数=新字典();
参数。添加(“会话”,SessionID);
参数。添加(“模块名称”,模块);
参数。添加(“名称\值\列表”,记录);
参数。添加(“轨迹视图”,false);
字符串jsonData=CreateFormattedPostRequest(“设置项”,参数);
var请求=GetRestRequest(jsonData,“POST”);
var结果=GetResponseByType(请求);
返回result.ToString();
}
要使用c#调用rest api SugarCRM/SuiteCRM,可以使用
创建帐户的示例:
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-------------------
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-------------------