Имя: Пароль:
1C
1С v8
Получение данных POST в http-сервисе
0 vladimir80
 
16.06.17
00:33
Всем привет. Есть http-сервисе есть замечательный метод ПолучитьТелоКакСтроку(). В нем содержится строка, с переданным методом POST массивом из php.

из php уходит
array('q'=>5654,'w'=>8945,'e'=>7878,'r'=>'dsddssd')

в 1с получаю
q=5654&w=8945&e=7878&r=dsddssd

Вопрос: есть ли метод, которым в 1с можно преобразовать эти данные в структуру без тупого парсинга строки?

Заранее благодарю за наводку.
1 Asmody
 
16.06.17
01:37
Есть. Отдавать на той стороне JSON.
2 vladimir80
 
16.06.17
03:30
(1) Спасибо! Упорно пытался передать json в составе массива, вместо передачи простой строки.


В общих чертах правильно поступить так:

пхп
        $process = curl_init( $url );
        curl_setopt($process, CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
        curl_setopt($process, CURLOPT_HEADER, 0);
        curl_setopt($process, CURLOPT_USERPWD, $this->options['user'] . ":" . $this->options['pass']);
        curl_setopt($process, CURLOPT_TIMEOUT, 30);
        
        if ($postfields && is_array($postfields)){
            curl_setopt($process, CURLOPT_POST, count($postfields));
            curl_setopt($process, CURLOPT_POSTFIELDS, json_encode($postfields));
        }
        curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
        $return = curl_exec($process);
        curl_close($process);




Ответ = Новый HTTPСервисОтвет(200);
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
    Результат = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();


в итоге массив получаем в структуру.

Спасибо!