Как можно принять JSON?

115
07 января 2021, 13:30

Подскажите пожалуйста как в PHP принимается JSON? Просто, я тут решил потестить в битриксе24 исходящие веб хуки написал API на .net но он почему-то не может ничего принял от битрикс, ну я и написал простую прогу которая отправляет JSON на API

var date = new
            {
                Value1="dsfgdfg",
                Value2="tyuotyugkljkmv"
            };
            byte[] byteArray = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(date));
            WebRequest request = WebRequest.Create();
            request.Method = "POST";
            request.Headers.Add("Charset:utf8");
            request.ContentLength = byteArray.Length;
            request.ContentType = "application/json";
            Stream datastream = request.GetRequestStream();
            datastream.Write(byteArray, 0, byteArray.Length);
            datastream.Close();
            WebResponse response = request.GetResponse();
            var stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            var data = stream.ReadToEnd().Replace("null", "''");
            var statusCode = Convert.ToInt16(((HttpWebResponse)response).StatusCode);

API в итоге нормально принимает JSON.

Ну и тогра я нашел код на PHP для исходящего веб хука и отправки в чат того что пришло

postToChat(print_r($_REQUEST, true));
function postToChat($message, $attach = array()) {
$queryUrl = 'https://xxxxxxx.bitrix24.ru/rest/1/xxxxxx/im.message.add.json';
$queryData = http_build_query(
    array(
        "USER_ID" => 1,
        "MESSAGE" => $message,
        "ATTACH" => $attach
    )
);
$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);
return json_decode($result, true);
}

Код то работает спокойно принимает все что приходит из битрикс, однако, когда я обращаюсь к нему но через прогу на .net он ничего кроме Array() не выдает.

Я PHP ток начал изучать, подскажите почему вместо этого {Value1="dsfgdfg",Value2="tyuotyugkljkmv" } я вижу это Array().

Спасибо

Answer 1

как пример

<?php
$array=['apple','orange','banana','strawberry'];
 $fun=json_encode($array, JSON_FORCE_OBJECT);
 echo $fun.'<br>';
$afun=json_decode($fun);
print_r($afun);
?>
READ ALSO
Как получить данные из потоков не используя вывод для пользователя

Как получить данные из потоков не используя вывод для пользователя

Всем приветИспользуя для REST-клиента библиотеку GuzzleHttp

106
Округление числа в PHP

Округление числа в PHP

Есть плагин, который выводит цену в формате: базовая цена - %скидки = цена со скидкойОчень часто цена выводится с копейками, т

96
php Конвертация ресурса GD в ImageMagick и обратно

php Конвертация ресурса GD в ImageMagick и обратно

Есть код написанный с использованием GD для обработки изображенийПроблема в том, что возможностей GD не хватает, поэтому хочется дополнительно...

97
Не обновляются стили, сайт на Yii2

Не обновляются стили, сайт на Yii2

Меняю стили на сайте, через фтп сразу правлю, потом захожу через файлзиллу проверяю,изменения сохранились, но на сайте изменений нету,в браузере...

89