| 
    
            
         
         | 
    
  | 
1C и отправка POST запроса с JSON на сайт | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        VarIzo    
     02.12.16 
            ✎
    14:09 
 | 
         
        Доброго всем дня. Не могу разобраться с отправкой POST запроса скрипту на сайте данных в формате json из 1С.
 
        В php скрипте просто var_dump($_POST); var_dump($_GET); В 1с тЗаписьJSON = Новый ЗаписьJSON; тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); тЗаписьJSON.УстановитьСтроку(тПараметрыJSON); массивЧегото = Новый Массив; сЗаказы = Новый Структура; тДанные = Новый Структура; тДанные.Вставить("ЧислоJSON", 100); тДанные.Вставить("СтрокаJSON", "test"); массивЧегото.Добавить(тДанные); тДанные = Новый Структура; тДанные.Вставить("ЧислоJSON", 101); тДанные.Вставить("СтрокаJSON", "test1"); массивЧегото.Добавить(тДанные); сЗаказы.Вставить("xxx", массивЧегото); ЗаписатьJSON(тЗаписьJSON, сЗаказы); strJSON = тЗаписьJSON.Закрыть(); Соединение = Новый HTTPСоединение(ИмяСайта); HTTPЗапрос = Новый HTTPЗапрос(ИмяСкрипта); HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json"); HTTPЗапрос.УстановитьТелоИзСтроки(strJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt"); Соединение.ОтправитьДляОбработки(HTTPЗапрос, ИмяФайлаОтвета); ФайлОтвета = Новый Файл(ИмяФайлаОтвета); На выходе в файле ответа имею array(0) { } array(0) { } Что я не так делаю?  | 
|||
| 
    1
    
        Glenas    
     02.12.16 
            ✎
    14:16 
 | 
         
        (0) https?
 
        Соединение = Новый HTTPСоединение(ИмяСайта);  | 
|||
| 
    2
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:16 
 | 
         
        а почему понял что делаешь не так?     
         | 
|||
| 
    3
    
        VarIzo    
     02.12.16 
            ✎
    14:18 
 | 
         
        Ну я ожидал на var_dump($_POST); увидеть мою строку json которая     
         | 
|||
| 
    4
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:19 
 | 
         
        с чего бы?     
         | 
|||
| 
    5
    
        VarIzo    
     02.12.16 
            ✎
    14:19 
 | 
         
        Подкинул все это дело в socketTest. Строка уходит. Непонятно     
         | 
|||
| 
    6
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:20 
 | 
         
        Серверный код в курсе твоих ожиданий?
 
        Если выполнить тот же код только помощью утилиты curl - строка возвращается?  | 
|||
| 
    7
    
        VarIzo    
     02.12.16 
            ✎
    14:20 
 | 
         
        Живой - а почему нет? ОтправитьДляОбработки - Отправляет данные на указанный адрес для обработки при помощи HTTP-запроса POST. Может я не так понял помощника     
         | 
|||
| 
    8
    
        VarIzo    
     02.12.16 
            ✎
    14:21 
 | 
         
        "Серверный код в курсе твоих ожиданий?" - скрипт к которому я обращаюсь разве не получает данные $_POST?     
         | 
|||
| 
    9
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:24 
 | 
         
        2(8) Капец, Получает и возвращает тебе ответом - 200.
 
        Что не так?  | 
|||
| 
    10
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:25 
 | 
         
        var_dump($_POST); - это кусок серверного кода? чтото типа Сообщить()?
 
        Я думал это клиентский скрипт  | 
|||
| 
    11
    
        Mauser    
     02.12.16 
            ✎
    14:25 
 | 
         
        >HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
 
        ... >var_dump($_POST); Это с какой версии php так может?  | 
|||
| 
    12
    
        VarIzo    
     02.12.16 
            ✎
    14:26 
 | 
         
        Живой будь человек поясни по-русски, 3 года здороваться при встрече буду. Никогда раньше 1с с сайтом не дружил, а тут понадобилось. Нужно строчку в php скрипт передать чтоб он ее клятую обработал. Чего не так я делаю?     
         | 
|||
| 
    13
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:26 
 | 
         
        То есть я правильно понял - ты хочешь чтобы на 1Сном форуме тебе помогли серверный пхп-код отладить?     
         | 
|||
| 
    14
    
        Живой Ископаемый    
     02.12.16 
            ✎
    14:27 
 | 
         
        в 1С ты все так делаешь. Наверное.
 
        По крайне мере до того, пока не доказано обратное. Докажи что код 1С лажает.  | 
|||
| 
    15
    
        VarIzo    
     02.12.16 
            ✎
    14:30 
 | 
         
        Да чего там отлаживать то? Он простой как автомат калашникова. Дерни его сейчас аяксом любым он тебе вернет то что ты ему отправишь. Тут видимо Mauser прав - не то я в заголовке пишу     
         | 
|||
| 
    16
    
        Mauser    
     02.12.16 
            ✎
    14:32 
 | 
         
        (15) Ты вообще с чего взял, что $_POST будет тебе JSON разбирать?     
         | 
|||
| 
    17
    
        VarIzo    
     02.12.16 
            ✎
    14:34 
 | 
         
        В пост я ожидал увидеть данные которые я передал. JSOn это просто для примера. Да хоть слово "Х*Й" туда передай     
         | 
|||
| 
    18
    
        Mauser    
     02.12.16 
            ✎
    14:36 
 | 
         
        (17) Передай туда файл ёкселя и негодуй что он не показывает тебе вложенные картинки, чо.     
         | 
|||
| 
    19
    
        VarIzo    
     02.12.16 
            ✎
    14:44 
 | 
         
        Пока что как решил:
 
        Во первых не application/json а x-www-form-urlencoded Во вторых в скрипте не $_POST а $HTTP_RAW_POST_DATA. Хотя решение мне это не нравиться  | 
|||
| 
    20
    
        DTX 4th    
     02.12.16 
            ✎
    14:44 
 | 
         
        Попробуй php://input
 
        private function retrieveJsonPostData()
http://php.net/manual/ru/wrappers.php.php http://stackoverflow.com/questions/8893574/php-php-input-vs-post  | 
|||
| 
    21
    
        Fragster    
     гуру 
    02.12.16 
            ✎
    14:44 
 | 
         
        анализируй php:input     
         | 
|||
| 
    22
    
        Fragster    
     гуру 
    02.12.16 
            ✎
    14:45 
 | 
         
        (20) опередил :)     
         | 
|||
| 
    23
    
        Fragster    
     гуру 
    02.12.16 
            ✎
    14:45 
 | 
         
        вот тут пример http://catalog.mista.ru/public/348215/     
         | 
|||
| 
    24
    
        Fragster    
     гуру 
    02.12.16 
            ✎
    14:46 
 | 
         
        (23)+ при незначительных изменениях преобразуется под любой прокси, например для обеспечения cross-domail ajax вызова 1ски, когда запрос options должен идти без авторизации, а остальное - с ней     
         | 
|||
| 
    25
    
        VarIzo    
     02.12.16 
            ✎
    14:47 
 | 
         
        (20) пусто. Совсем ничего     
         | 
|||
| 
    26
    
        VarIzo    
     02.12.16 
            ✎
    14:57 
 | 
         
        Проблема решена     
         | 
|||
| 
    27
    
        DTX 4th    
     02.12.16 
            ✎
    14:58 
 | 
         
        Что в итоге было не так?
 
        Вот тут есть пример с реализацией на 1С и PHP: https://linemedia.atlassian.net/wiki/pages/viewpage.action?pageId=17170467 Мб пригодится кому.  | 
|||
| 
    28
    
        VarIzo    
     02.12.16 
            ✎
    14:59 
 | 
         
        Сейчас напишу     
         | 
|||
| 
    29
    
        VarIzo    
     02.12.16 
            ✎
    15:03 
 | 
         
        Вообщем проблемы как таковой не было - было просто незнание и непонимание HTTP заголовков.
 
        Для начала не HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json"); А HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded;charset=utf-8"); Во вторых не HTTPЗапрос.УстановитьТелоИзСтроки(strJSON, А HTTPЗапрос.УстановитьТелоИзСтроки("motherFuckerData="strJSON,  | 
|||
| 
    30
    
        Mauser    
     02.12.16 
            ✎
    16:16 
 | 
         
        (29) Это непонимание не заголовков, а http протокола вообще.
 
        В mime типе "application/x-www-form-urlencoded" буквочки "encoded" не просто так стоят.  | 
|||
| 
    31
    
        Fragster    
     гуру 
    02.12.16 
            ✎
    17:00 
 | 
         
        (29) ты решил не ту задачу     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |