Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sugar CRM 6.5.14-使用C调用REST API#_C#_Sugarcrm - Fatal编程技术网

C# Sugar CRM 6.5.14-使用C调用REST API#

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

在RESTAPI方面,doco的支持率低得惊人。有谁能给我一个使用C#的Sugar CRM REST调用的工作示例吗


我试过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-------------------