|
POST запрос на API с параметрами и json данными | ☑ | ||
---|---|---|---|---|
0
LopesLeonid
27.10.22
✎
14:23
|
Всем здравствуйте, требуется помощь.
Как сделать вот этот код на python в 1С import requests url = 'http://192.168.220.224/api' data = {"number": "001"} params = {'name': 'lina', 'id': '1'} resp = requests.post(url, params=params, json=data) print(resp) |
|||
1
НафНаф
27.10.22
✎
14:27
|
гуглим HTTP-запросы и работу с JSON в 1С
|
|||
2
ColonelAp4u
27.10.22
✎
14:31
|
(0) формируешь структуру из своих параметров и делаешь пост запрос
ТелоЗапроса = Новый Структура; ТелоЗапроса.Вставить(тут твои параметры); ЗаписьJSON = Новый ЗаписьJSON; ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина); ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса); ТелоЗапроса = ЗаписьJSON.Закрыть(); Настройки = Формируешь струтуру настроек с заголовками SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено); HTTPСоединение = Новый HTTPСоединение(Настройки.Сервер, , , , , ВремяОжиданияОтветаСервис,SSL); // HTTPЗапрос = Новый HTTPЗапрос(Настройки.Ресурс + КодГруппы + "/" + НаименованиеОперации + "?token=" + Токен, Настройки.Заголовки); HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); РезультатHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); РезультатЗапроса.КодОтвета = РезультатHTTP.КодСостояния; РезультатЗапроса.ОтветXML = РезультатHTTP.ПолучитьТелоКакСтроку(); ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(РезультатЗапроса.ОтветXML); Далее читаешь результат ответа |
|||
3
mikecool
27.10.22
✎
14:31
|
парамс видимо заголовки, дата - тело
|
|||
4
ColonelAp4u
27.10.22
✎
14:33
|
HTTPЗапрос = Новый HTTPЗапрос(Настройки.Ресурс, Настройки.Заголовки);
|
|||
5
Мультук
гуру
27.10.22
✎
14:33
|
||||
6
LopesLeonid
27.10.22
✎
14:41
|
Почему в python это делается в три строчки, а тут такие портянки писать приходится)
|
|||
7
НафНаф
27.10.22
✎
14:43
|
(6) Доступно и всерьез (с)
|
|||
8
НафНаф
27.10.22
✎
14:44
|
(6) можно свою мини-библиотеку написать, тоже будешь в 2 строки умещаться
|
|||
9
LopesLeonid
27.10.22
✎
14:46
|
ЗаписьJSON = Новый ЗаписьJSON;
тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); ЗаписьJSON.УстановитьСтроку(тПараметрыJSON); тДанные = Новый Структура; тДанные.Вставить("number", "001"); ЗаписатьJSON(ЗаписьJSON, тДанные); СтрокаJS = ЗаписьJSON.Закрыть(); Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"); Заголовки.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); Заголовки.Вставить("Accept-Language", "ru"); Заголовки.Вставить("Accept-Charset", "utf-8"); Заголовки.Вставить("Content-Language", "ru"); Заголовки.Вставить("Content-Charset", "utf-8"); HTTPСоединение = Новый HTTPСоединение("192.168.220.224",80,,,,,); HTTPЗапрос = Новый HTTPЗапрос("/api"+"?name=lina&id=1", Заголовки); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJS, КодировкаТекста.UTF16, ИспользованиеByteOrderMark.НеИспользовать); РезультатHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); Возврат РезультатHTTP.КодСостояния; |
|||
10
LopesLeonid
27.10.22
✎
14:46
|
так сделал, не работает
json выглядит так {"number": "001"} |
|||
11
LopesLeonid
27.10.22
✎
14:47
|
возвращает 200 код, типа норм всё
|
|||
12
Kassern
27.10.22
✎
14:51
|
(0) (6) Почему в питоне 3 строчки, а на си нужно целую страницу написать?)
Вот вам в условные "3 строчки": connect = Новый HTTPСоединение("192.168.220.224"); params = Новый соответствие(); params.Вставить("name","lina"); params.Вставить("id","1"); request=Новый HTTPЗапрос("/api",params ); request.УстановитьТелоИзСтроки("{"number": "001"}") Ответ= connect.ВызватьHTTPМетод("POST",request); Сообщить(Ответ.ПолучитьТелоКакСтроку()); //Те же 6 строк как и в питоне)) |
|||
13
vbus
27.10.22
✎
15:53
|
(6) По тому, что остальные портянки в import requests
|
|||
14
timurhv
27.10.22
✎
15:57
|
(0)
ИнтеграцияИСМП.ОтправитьДанныеВСервис(URLЗапроса, ТелоЗапроса, Неопределено, "POST", ПараметрыHTTP); |
|||
15
Смотрящий от 1С
27.10.22
✎
16:03
|
КодировкаТекста.UTF16 там точно в тему?
|
|||
16
LopesLeonid
28.10.22
✎
09:56
|
Так решил
ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина)); тДанные = Новый Структура; тДанные.Вставить("number", "001"); ЗаписатьJSON(ЗаписьJSON, тДанные); СтрокаJS = ЗаписьJSON.Закрыть();// тут json файл создаём хСоединение = Новый HTTPСоединение("192.168.220.224" ,80,,,,,); хЗапрос = Новый HTTPЗапрос; хЗапрос.АдресРесурса = "/api/?name=lina&id=001"; //в адресе передаём параметры хЗапрос.Заголовки.Вставить("Content-Type", "application/json;charset=utf-8"); хЗапрос.УстановитьТелоИзСтроки(СтрокаJS);//тут json файл прикрепляем Ответ = хСоединение.ВызватьHTTPМетод("POST",хЗапрос); Сообщить(Ответ.ПолучитьТелоКакСтроку()); |
|||
17
LopesLeonid
28.10.22
✎
09:59
|
ну или не файл json, а строку)
|
|||
18
LopesLeonid
31.10.22
✎
13:57
|
Так запрос PUT делать, вдруг кому понадобится
хСоединение = Новый HTTPСоединение(АдресСервера ,80,,,,,); хЗапрос = Новый HTTPЗапрос; хЗапрос.АдресРесурса = АдресРесурса;//адрес с параметрами хЗапрос.Заголовки.Вставить("Content-Type", "application/json;charset=utf-8"); хЗапрос.УстановитьТелоИзСтроки(СтрокаJS);//строка json Ответ = хСоединение.ВызватьHTTPМетод("PUT", хЗапрос); Возврат Ответ.ПолучитьТелоКакСтроку(); |
|||
19
LopesLeonid
31.10.22
✎
13:58
|
А так DELETE, не сильно отличается от предыдущего но всё же)
хСоединение = Новый HTTPСоединение(АдресСервера ,80,,,,,); хЗапрос = Новый HTTPЗапрос; хЗапрос.АдресРесурса = АдресРесурса;//адрес с параметрами хЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); //хЗапрос.УстановитьТелоИзСтроки(СтрокаJS);//строка json Ответ = хСоединение.ВызватьHTTPМетод("DELETE", хЗапрос); Возврат Ответ.ПолучитьТелоКакСтроку(); |
|||
20
arsik
гуру
31.10.22
✎
14:02
|
(6) (8) Можно даже в 1. Прикинь?
Сообщить(POSTЗапросНаAPIсПараметрамиИJsonДанными(URL, data, params)); |
|||
21
LopesLeonid
31.10.22
✎
14:05
|
(20) 1С что-ли защищаешь? ))
|
|||
22
LopesLeonid
31.10.22
✎
14:37
|
А это для GET запроса
хСоединение = Новый HTTPСоединение(АдресСервера ,80,,,,,); хЗапрос = Новый HTTPЗапрос; хЗапрос.АдресРесурса = АдресРесурса;// тут параметры "/?p1=123&p2=321" хЗапрос.Заголовки.Вставить("Content-Type", "text/html;charset=utf-8"); Ответ = хСоединение.ВызватьHTTPМетод("GET", хЗапрос); |
|||
23
Kassern
31.10.22
✎
15:14
|
(22) А всего лишь надо открыть СП и прочитать про ВызватьHTTPМетод() =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |