|
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) ты решил не ту задачу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |