|
Отправить Get запрос на сайт с include | ☑ | ||
---|---|---|---|---|
0
Виктория_62
naïve
05.09.24
✎
14:32
|
Мне нужно отправить HTTP запрос на сайт и получить информацию по заказам (номер, заказчика, товары и тп и тд).
Я отправляю запрос с текстом запроса "selling/orders/index" и получаю информацию по заказам, условно, следующего вида: "data": [ { "id": "01964bac-de4f-7126-aj7f-87a8e22b75cb", "created_at": "2024-08-13 15:18:26", "updated_at": "2024-08-13 15:18:26", "company_id": "0193078c-85ed-72f2-9a2b-dge7d213deae", "number": 1, "source": "showcase", "source_id": "019107d6-8g6f-73e6-9939-4d72fdab4909", "external_id": null, "is_test": false, "status": "new", "status_description":, "description": "Тип доставки: Курьером в Рязань\nУлица: Чапаева\nДом: 1\nКвартира: 100\n\nКомментарий:\nвквпвкп", "notes": null, "customer_id": "01914bac-ddf1-73d8-ba5a-894a9ce7b67f", "customer": { "user_name": "Вася", "user_email": null, "user_phone": "+0000000000", "user_surname": "Петров", "user_patronymic": "Петрович" }, } Проблема в том, что здесь нет информации по товарам. В postman я могу написать тот же запрос selling/orders/index и указать, что мне нужно вернуть дополнительную информацию на вкладке raw следующим образом: { "include": ["goods_items.reserves", "goods_outlet_items", "payment", "receipts"] } И тогда я получаю полную информацию о заказах и товарах, но в postman. Как я могу преобразовать текст запроса для HTTP запроса в 1с, чтобы он указывал на необходимость вернуть дополнительную информацию, подобно тому, как я это делаю в postman при помощи include? Или мне нужно менять не текст запроса, а его параметры? |
|||
1
Fram
04.09.24
✎
15:02
|
Попробуйте в тело запроса добавить
|
|||
2
craxx
04.09.24
✎
15:27
|
(0) Вы реальные ФИО и телефоны не светили бы, персональные данные всё-таки.
|
|||
3
Волшебник
04.09.24
✎
16:44
|
(0) Вика, вы давно программист 1С?
|
|||
4
Виктория_62
naïve
04.09.24
✎
17:05
|
(3) год
(2) данные тестовые |
|||
5
Asmody
04.09.24
✎
17:21
|
(0) [В postman я могу написать тот же запрос selling/orders/index и указать, что мне нужно]
- и как вы указываете это в postman? |
|||
6
eklmn
гуру
05.09.24
✎
09:27
|
Сначала сделай хоть-что то в 1с и покажи что не работает
|
|||
7
CepeLLlka
05.09.24
✎
10:06
|
(0)В Постмане случаем не через POST это делаете?
|
|||
8
Виктория_62
naïve
05.09.24
✎
10:18
|
верно
|
|||
9
Asmody
05.09.24
✎
10:52
|
(8) А в теме почему тогда "GET"?
|
|||
11
CepeLLlka
05.09.24
✎
11:21
|
(8)Тогда наверное вам нужно показать нам код в котором не только данные которые вы отправляете, а и сам процесс отправки. То есть с HttpСоединением и HttpЗапросом
|
|||
12
Смотрящий
05.09.24
✎
11:37
|
(0) Покаж запрос в постман с raw
|
|||
13
Виктория_62
naïve
05.09.24
✎
12:12
|
(11)
Функция ФункцияПреобразования(Свойство, Значение, ДополнительныеПараметры) Экспорт Результат = Дата(1, 1, 1); Если ЗначениеЗаполнено(Значение) Тогда Значение = СтрЗаменить(Значение, "-", ""); Значение = СтрЗаменить(Значение, "T", ""); Значение = СтрЗаменить(Значение, ":", ""); Значение = СтрЗаменить(Значение, " ", ""); Значение = СтрЗаменить(Значение,Символы.НПП, ""); Значение = Лев(Значение, 14); Результат = Дата(Значение); КонецЕсли; Возврат Результат; КонецФункции ////////////////////////////////////////////////////////////////////////////// Процедура ВыполнитьЗапрос() ПараметрыПодключения = Новый Структура; ПараметрыПодключения.Вставить("АдресСервера", "int.api.test.su"); ПараметрыПодключения.Вставить("ApiKey", "ыфвфрывыфолапыаынеаныаинеаыаываыавы"); ТекстЗапроса = "selling/orders/index"; Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); Заголовки.Вставить("Token", ПараметрыПодключения.ApiKey); Заголовки.Вставить("Host", ПараметрыПодключения.АдресСервера); Соединение = Новый HTTPСоединение(ПараметрыПодключения.АдресСервера, 443,,,,,ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение()); Запрос = Новый HTTPЗапрос(ТекстЗапроса, Заголовки); РезультатЗапроса = Соединение.ОтправитьДляОбработки(Запрос); СтрокаОтвета = РезультатЗапроса.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); МассивСвойствДат = Новый Массив; МассивСвойствДат.Добавить("expires"); МассивСвойствДат.Добавить("activated_at"); МассивСвойствДат.Добавить("last_login"); МассивСвойствДат.Добавить("created_at"); МассивСвойствДат.Добавить("date"); МассивСвойствДат.Добавить("updated_at"); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(СтрокаОтвета); ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, Истина,,, "ФункцияПреобразования", НазваниеЭтогоМодуля,, МассивСвойствДат); ЧтениеJSON.Закрыть(); Ответ = ДанныеJSON; Если НЕ Ответ.Количество() = 0 Тогда Data = Ответ.Получить("data"); Для Каждого Элемент Из Data Цикл // Здесь имееется вышеописанная структура сообщить(элемент["number"]); КонецЦикла; КонецЕсли; КонецПроцедуры (12) POST {{host}}/selling/orders/index Под запросом перейти на вкладку Body, там ниже станет видна вкладка raw, где написано { "include": ["goods_items.reserves", "goods_outlet_items", "payment", "receipts"] } Могу только описать, картинку здесь не отправить |
|||
14
Смотрящий
05.09.24
✎
12:23
|
(13) Интересует именно скриншот выполненного запроса в постман. Сделай, затри критичные данные и покаж - на сторонний ресурс картинку. Сюда ссылку на нее.
|
|||
15
trad
05.09.24
✎
12:26
|
Запрос.УстановитьТелоИзСтроки("{""include"": [""goods_items.reserves"", ""goods_outlet_items"", ""payment"", ""receipts""]}");
перед ОтправитьДляОбработки |
|||
16
Виктория_62
naïve
05.09.24
✎
13:00
|
(15) (1)
Спасибо :3 Надо было добавить в тело запроса, долго искала -как. Мой вариант получился длиннее МассивДопПолей = Новый Массив; МассивДопПолей.Добавить("goods_outlet_items"); МассивДопПолей.Добавить("goods_items.reserves"); МассивДопПолей.Добавить("payment"); МассивДопПолей.Добавить("receipts"); СтруктураДопПолей = Новый Структура; СтруктураДопПолей.Вставить("include", МассивДопПолей); ЗаписьJSON = Новый ЗаписьJSON; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); НастройкиСериализации = Новый НастройкиСериализацииJSON; НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO; НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата; ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураДопПолей, НастройкиСериализации); ТелоЗапроса = ЗаписьJSON.Закрыть(); Запрос.УстановитьТелоИзСтроки(ТелоЗапроса); |
|||
17
trad
05.09.24
✎
14:40
|
(16) >>Мой вариант получился длиннее
И это правильно - через сериализацию структуры. Я только обозначил метод |
|||
18
Повелитель
05.09.24
✎
15:43
|
(0) (16) Годная тема.
Вот только на днях понадобилось получать информацию по заказам с одного маркетплейса, так как раз через POST запрос и JSON с параметрами. Я на форуме помощи попросил, ответили, но только в сторону что изучить. Я пока ещё не реализовал, время не было. А тут и код рабочий подъехал. Спасибо, мне как раз подходит )) |
|||
19
CepeLLlka
05.09.24
✎
15:56
|
(18)Правильный ник - залог успеха!
|
|||
20
trad
05.09.24
✎
20:17
|
(18) А ты точно читать умеешь?
Я тебе ровно такой же ответ дал в твоей ветке) |
|||
21
Fram
05.09.24
✎
23:27
|
(18) С таким то опытом можно было и самому
|
|||
22
Повелитель
06.09.24
✎
07:28
|
(20) Ну так, а я что написал? Ответ в своём посте получил, открыл ЗаписьJSON ознакомился, но время реализовать не было, так как есть более приоритетные задачи.
Тут открываю данную тему, и вижу как раз готовый код по своей задаче. Что не так то? Тебе спасибо за ответ. Я же больше в своей ветке ничего не спрашивал, значит всё понял. (21) Вектор направления для изучения мне дали, не было времени решать данную задачу ещё. Самостоятельно новые задачи можно часами решать. Лучше совета у товарищей спросить. Иногда достаточно узнать в каком направление изучать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |