【问题标题】:Inserting record in zoho api v2 in PHP在 PHP 中的 zoho api v2 中插入记录
【发布时间】:2018-12-01 12:13:01
【问题描述】:

我想使用 api v2 在 zoho crm 中插入数据。首先创建一个数组,然后我编码 json .Request url https://www.zohoapis.com/crm/v2/Contacts。 但是我得到了这个错误。

代码:

$authtoken = ***********;
$fields={"data":["{\"Last_Name\":\"Test John insert\",\"Email\":\"testjhon@jhon.com\"}"]};

$zoho_url = "https://www.zohoapis.com/crm/v2/Contacts";

错误:

{"data":[{"code":"INVALID_DATA","details":{"expected_data_type":"jsonobject","index":0},"message":"invalid data","status":"error"}]}

【问题讨论】:

  • 也许您需要将您的内容类型明确设置为应用程序 json 或其他内容以及您的 cURL 请求
  • 这是一个问题,但不起作用。谢谢@Ghost

标签: php api curl zoho


【解决方案1】:

使用这个 json 数组:

$fields = "{\"data\":[{\"Last_Name\": \"Test\",\"First_Name\": \"TESTING\",\"Email\": \"demo@w3scloud.com\"}],\"trigger\":[\"approval\",\"workflow\"]}";

【讨论】:

    【解决方案2】:

    这样发送:

    [{ "data": \[ { "Company":"company name", "Last_Name":"your last name", "Phone":"123456789", "First_Name": "your first name", "Email":"first@gmail.com" } \], “triggger”:\[“workflow”,”approval”,”blueprint”\] }]
    

    click here to view image (request and response via postman)

    希望这会对您有所帮助。

    【讨论】:

      【解决方案3】:

      工作示例:

      $fields = json_encode(
          array(
              "data" => array([
                  "Company"   => "abc",
                  "Last_Name" => "Tom",
                  "City"      => "Egham" 
              ],
              [   
                  "Company"   => "abc",
                  "Last_Name" => "Jerry",
                  "City"      => "Egham"
              ])
          )
      );
      

      以这种方式发送标头:

      $headers = array(
          'Content-Type: application/json',
          'Content-Length: ' . strlen($fields),
          sprintf('Authorization: Zoho-oauthtoken %s', $oauth)
      );
      

      【讨论】:

        【解决方案4】:

        我注意到 Zoho 似乎需要在数据周围添加一对额外的括号。您可以尝试将数据数组编码为 JSON 字符串之前将其发送到 cURL。

        $fields = json_encode([
            ["data" => ["Last_Name" => "Test John insert","Email" => "testjhon@jhon.com"]],
        ]);
        

        正如@Ghost 提到的,您可能还需要更改内容类型。根据PHP docs,将数组传递给CURLOPT_POSTFIELDS会设置content-type为multipart/form-data;你可能想要的是application/json

        CURLOPT_HTTPHEADER => array(
            "Authorization: ".$authtoken,
            "Content-Type: application/json"
        ),
        

        【讨论】:

          【解决方案5】:

          您必须将 json 文件发送到 zoho api,一切正常。:

            $fields=["data"=> ['Last_Name'=>'Test John insert','Email'=>'testjhon@jhon.com']];
            $fields = json_encode($fields);
          

          【讨论】:

          • 这与 Rideron89 的答案或多或少相同,只是他们说您需要一个额外的数组来包装该对象?
          猜你喜欢
          • 1970-01-01
          • 2012-04-15
          • 2019-11-04
          • 2021-10-19
          • 2019-04-04
          • 2020-03-26
          • 1970-01-01
          • 2017-11-15
          • 2014-04-04
          相关资源
          最近更新 更多