2017-10-01 8 views
0

私は2つのシステム間の自動同期に取り組んでいます。 1つのシステムにデータベースがあり、マーケティングのために別のシステムを使用しています。私はデータベースシステムから完全なデータを引き出すことができます。しかし、マーケティングツールにデータを挿入するときに、無効なボディリクエストが発生します。ドキュメントのcURL APIと動的データとヘッダ認証の統合

、これらの詳細である:

1) - URL - :

https://api.customdomain/recipients

2) - リクエストボディ:

[ 
     { 
     "email": "[email protected]", 
     "last_name": "Jones", 
     } 

] 

3 ) - 認証ヘッダー

ヘッダーを通じて承認が行われます。

Authorization: Bearer *API key goes here*; 

これは私が試したコードです。 データを動的に配置できるはずです

$fields = array(
      'email' => "[email protected]", 
      'last_name' => "test40" 
      ); 

$methd="POST"; 
$url="https://api.customdomain/recipients"; 
$data=http_build_query($fields); 
$rep= CallAPI($methd, $url, $fields); 

echo $rep; 

function CallAPI($method, $url, $data = false) 
{ 
    $curl = curl_init(); 

    switch ($method) 
    { 
     case "POST": 
      curl_setopt($curl, CURLOPT_POST, 1); 

      if ($data) 
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
      break; 
     case "PUT": 
      curl_setopt($curl, CURLOPT_PUT, 1); 
      break; 
     default: 
      if ($data) 
       $url = sprintf("%s?%s", $url, http_build_query($data)); 
    } 

$headr=array(
    "authorization: Bearer *API key here*", 
    "cache-control: no-cache" 
); 
    $ver="CURL_HTTP_VERSION_1_1"; 

    // Optional Authentication: 
    //curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    // curl_setopt($curl, CURLOPT_USERPWD, "username:password"); 
    curl_setopt($curl, CURLOPT_HTTPHEADER,$headr); 
    curl_setopt($curl, CURLOPT_HTTP_VERSION,$ver); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    $result = curl_exec($curl); 

    curl_close($curl); 

    return $result; 
} 
+0

から十分であり、iは$データと試みている '$データ= http_build_query($フィールド)。 $ rep = CallAPI($ methd、$ url、$ data); ' まだ動作していません –

+0

私はそれを手に入れました。マーケティングツールが受け取るボディのフォーマットは、この配列メソッドとは異なります。配列を文字列に変更しました。今それは完璧に働いています –

答えて

0

私はそれを得ました。マーケティングツールが受け取るボディのフォーマットは、この配列メソッドとは異なります。配列を文字列に変更しました。今それは完璧に働いています。

これはCallAPI関数のカール

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "https://api.custom"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//Setting post data as xml 
curl_setopt($curl, CURLOPT_HTTPHEADER, array("authorization: API key")); 
$result = curl_exec($curl); 
curl_close($curl); 
print($result); 
関連する問題