2017-02-27 10 views
3

Bitrix24 CRMwebhook functional에 추가하여 CRM에 리드 (클라이언트)를 추가하십시오. 모든 설명서는 PHP로 작성된 있지만 ASP.NET을 사용하고 싶습니다. 여기에 그들이 PHP에서 어떻게하는지 :Bitrix24 Rest API 게시물을 ASP.NET을 사용하여

$queryUrl = 'https://restapi.bitrix24.ru/rest/1/31uhq2q855fk1foj/crm.lead.add.json'; 
$queryData = http_build_query(array(
    'fields' => array(
     "TITLE" => "NEW LEAD" 
    ), 
    'params' => array(
     "REGISTER_SONET_EVENT" => "Y" 
    ) 
)); 

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_SSL_VERIFYPEER => 0, 
    CURLOPT_POST => 1, 
    CURLOPT_HEADER => 0, 
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => $queryUrl, 
    CURLOPT_POSTFIELDS => $queryData 
)); 

$result = curl_exec($curl); 
curl_close($curl); 

$result = json_decode($result, 1); 

나는 ASP.NET을 사용하여 같은 일을하려하지만 응답으로 400 오류가 발생합니다. 나는 거의 문제가 요청 매개 변수 인 라인 const string data = @"[{""fields"":{""title"":""Test""}}]";에 있다고 확신한다. 나는 수많은 조합을 시도했지만 아무 것도 효과가 없었습니다.

const string url = @ "https://companyname.bitrix24.ru/rest/14/31uhq2q855fk1foj/crm.lead.add.json"; 
const string data = @"[{""fields"":{""title"":""Test""}}]"; 

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri(url); 
byte[] cred = Encoding.UTF8.GetBytes("email:password"); 
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred)); 
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 

HttpContent content = new StringContent(data, Encoding.UTF8, "application/json"); 
HttpResponseMessage messge = client.PostAsync(url, content).Result; 
string description; 
if (messge.IsSuccessStatusCode) { 
    string result = messge.Content.ReadAsStringAsync().Result; 
    description = result; 
} 

답변

3

Bitrix24 지원은 PHP로 매우 "행복"이며, 다른 언어에 대해 알고하지 않습니다 :(나는 익명의 객체와 json.net와 방법을 발견 몇 가지 조사 후 시료를해야는 다음과 같습니다.

var data = new { 
    fields = new { 
    TITLE = "NEW LEAD" 
    }, 
    @params = new { 
    REGISTER_SONET_EVENT = "Y" 
    } 
}; 
var contentText = JsonConvert.SerializeObject(data); 

var content = new StringContent(contentText, Encoding.UTF8, "application/json"); 
// and so on with HttpClient 
+0

이 답변에 고맙습니다. 한 가지 : 키워드이기 때문에'params'를'@params'로 변경해야했습니다. 다른 모든 것은 잘 작동했습니다. :) – randomsuffer

+0

죄송합니다. 죄송합니다, 나는 다른 방법에 대한 내 소스를 조사하고 SO 응답에 직접 "예제로"코드를 썼습니다. 내 대답이 수정되었습니다. – Dmitry