Разбор / декодирование ответа (в формате Json?) - PHP Curl - PullRequest
0 голосов
/ 04 сентября 2018

Я использую PHP Curl для передачи данных HTML-формы в CRM (Zoho), где создается запись.

Ответ после создания записи (echo $ response;):

* Запись успешно добавлена ​​* 3442526000000497019 * 2018-09-04 11: 32: 312018-09-04 11: 32: 31 *

Я хочу проанализировать / декодировать этот ответ ($ response), чтобы извлечь идентификатор записи ( 3442526000000497019 ).

В CRM API SDK говорится что-то об ответах в формате json.

Поэтому я попытался расшифровать ответ с помощью функции json_decode:

var_dump(json_decode($responser));
var_dump(json_decode($responser, true));

Однако это возвращает NULL (NULL возвращается, если json не может быть декодирован или если закодированные данные глубже, чем предел рекурсии.), А не массив.

Буду признателен за любой совет, подсказку, указание пальцем в правильном направлении. Должен ли я декодировать его другим способом?

Следующий фрагмент моего скрипта показывает, как данные формы вставляются (как данные XML в CRM через php Curl):

<?php

$xml =  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <Leads>
        <row no=\"1\">
            <FL val=\"Uhrzeit\">".$uhrzeit."</FL>       
            <FL val=\"Datum\">".$datum."</FL>
            <FL val=\"First Name\">'Mad'</FL>
            <FL val=\"Last Name\">'Dog'</FL>
            <FL val=\"Phone\">".$phone."</FL>
            <FL val=\"Email\">".$email."</FL>
            <FL val=\"Zip Code\">".$postcode."</FL>
            <FL val=\"fuerwen\">".$fuerwen."</FL>
            <FL val=\"pflegegrad\">".$pflegegrad."</FL>
            <FL val=\"mobilitaet\">".$mobilitaet."</FL>
            <FL val=\"sprache\">".$sprache."</FL>
            <FL val=\"betreuungsbeginn\">".$zeitpunkt."</FL>
        </row>
    </Leads>";
$auth="fewfwefwe";
    $url ="https://crm.zoho.com/crm/private/xml/Leads/insertRecords";
    $query="authtoken=".$auth."&scope=crmapi&newFormat=1&xmlData=".$xml;
    $ch = curl_init();
    /* set url to send post request */
    curl_setopt($ch, CURLOPT_URL, $url);
    /* allow redirects */
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    /* return a response into a variable */
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    /* times out after 30s */
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    /* set POST method */
    curl_setopt($ch, CURLOPT_POST, 1);
    /* add POST fields parameters */
    curl_setopt($ch, CURLOPT_POSTFIELDS, $query);// Set the request as a POST FIELD for curl.

    //Execute cUrl session
    $responser = curl_exec($ch);
    curl_close($ch);
    echo $responser;

    var_dump(json_decode($responser));
    var_dump(json_decode($responser, true));

С уважением Леонора

1 Ответ

0 голосов
/ 11 сентября 2018

CRM API SDK реализован для работы с ZOHO CRM API версии 2, а код, на который вы ссылаетесь, вызывает API версии 1.

Вы публикуете в XML API, поэтому вы должны ожидать получения XML-ответа.

Если вы хотите получить ответ json, рассмотрите возможность изменения XML-части на JSON в URL-адресе API следующим образом: https://crm.zoho.com/crm/private/json/Leads/insertRecords, и он должен принимать те же параметры, что и XML-API.

Вот пример ответа:

{"response":{"result":{"recorddetail":{"FL":[{"val":"Id","content":"3442526888888888888"},{"val":"Created Time","content":"2018-09-11 14:21:31"},{"val":"Modified Time","content":"2018-09-11 14:21:31"},{"val":"Created By","content":"Jon Deo"},{"val":"Modified By","content":"Jon Deo"}]},"message":"Record(s) added successfully"},"uri":"/crm/private/json/Leads/insertRecords"}}

Пожалуйста, рассмотрите возможность удаления authtoken из вашего вопроса, так как он сейчас открыт для общественности!

...