2017-02-27 15 views
3

Bitrix24 CRMwebhook functionalがCRMにリード(クライアント)を追加しました。すべてのドキュメントはPHPで書かれていますが、私はASP.NETを使いたいと思います。ここで彼らはPHPでそれを行う方法です:Bitrix24 Rest API投稿の投稿:

$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