|
Как в get-запрос засунуть тело? | ☑ | ||
---|---|---|---|---|
0
VKS
03.10.19
✎
19:37
|
Добрый вечер
Читаю документацию к api, есть метод запроса статуса документа. Вот пример из документации: Пример: --request GET \ --url {url подключения}/api/getStatus \ --data '[ { "Id": "123456789", "Id_doc": "555" } ]' И что-то не соображу, как тело поместить в get-запрос. Т.е. указанные параметры "Id": "123456789", "Id_doc": "555" должны находиться не в самом запросе, как обычно я пишу ?id=123456789&Id_doc=555 а именно в теле get-запроса. Но всегда думал что у get нет тела. Попробовал использовать УстановитьТелоИзСтроки, где в качестве строки засунул json структуру приведенную выше, но сервер выдает ошибку ": пустая строка JSON". Понимаю, что правильно спрашивать не тут, а у разработчиков API, но пока такой возможности нет. Может я каких-то очевидных вещей не замечаю и тут все просто? |
|||
1
mikecool
03.10.19
✎
19:47
|
а джонсона как параметр засунуть можно?
|
|||
2
VKS
03.10.19
✎
19:49
|
наверное так и нужно, но не пойму как это сделать?
|
|||
3
ДенисЧ
03.10.19
✎
19:51
|
А попробуй то же самое ПОСТом отправить. В урле твои параметры, дату в тело запроса.
|
|||
4
VKS
03.10.19
✎
19:53
|
(1) вернее так, я по документации не понимаю, какой должен быть параметр, чтобы в него засунуть json
(3) постом сразу ошибка 503, т.е. там реально должен быть get-запрос |
|||
5
runoff_runoff
03.10.19
✎
19:53
|
еще PUT запросы есть.. например.. в Яндекс.Маркет..
|
|||
6
VKS
03.10.19
✎
19:54
|
Вся документация это:
Запроса статуса документа Пример: --request GET \ --url {url подключения}/api/getStatus \ --data '[ { "Id": "123456789", "Id_doc": "555" } ]' И какой получите ответ |
|||
7
VKS
03.10.19
✎
19:57
|
(5) пробовал, сразу ошибка 503. В (0) когда отправляю get получаю ошибку 500 с описанием, что у меня пустая строка JSON
|
|||
8
ДенисЧ
03.10.19
✎
19:58
|
А если эту дату таки в урл запихать? Именно так, &data='...'
|
|||
9
VKS
03.10.19
✎
20:06
|
(8) я только как не пробовал в параметры засунуть, и параметром и jsonом и так пробовал, всегда ошибка 503
единственное когда ошибка 500 это если HTTPЗапрос = Новый HTTPЗапрос("/api/getStatus") без параметров |
|||
10
DTX 4th
03.10.19
✎
20:13
|
https://stackoverflow.com/questions/978061/http-get-with-request-body
Это уже Post. Сегодня как раз не смог отправить Пост запрос стандартными средствами языка.. Никак тело не устанавливалось. Я даже не смог найти в СП, как файл в тело подложить. В общем, печальная 1С Вроде вот тут раньше можно было файл подсунуть, но сейчас пусто: https://i.imgur.com/OmrNnhm.png |
|||
11
Garikk
03.10.19
✎
21:14
|
в GET нелья передавать body, это противоречит стандарту, даже если получится это сделать то не факт что это будет работать корректно в дальнейшем и какойнить фаерволл или прокси его не сломает
|
|||
12
Юрий Лазаренко
03.10.19
✎
21:19
|
(1) Можно
(0) Попробуй для полученного JSON применить КодироватьСтроку и просто прикрепи его к GET-запросу после "?" |
|||
13
MyNick
03.10.19
✎
22:00
|
Если в Get запрос засунуть тело, то получится Post. Наличие тела, это как раз то что отличает пост от гет.
Это примерно как к бабушке приделать уй. Если бы у бабушки был уй, то она была бы дедушкой. |
|||
14
Garykom
гуру
03.10.19
✎
22:07
|
(0) Последние стандарты http разрешают тело для GET запросов.
Но не факт что 1С'ное HTTPСоединение не игнорирует установленное тело для GET. Попробуй ВызватьHTTPМетод("GET") |
|||
15
Garykom
гуру
03.10.19
✎
22:13
|
Ну и попробуй с [ ] или без них сразу {}
|
|||
16
VKS
03.10.19
✎
22:32
|
(14) об этом речь?
HTTPСоединение (HTTPConnection) ВызватьHTTPМетод (CallHTTPMethod) Синтаксис: ВызватьHTTPМетод(<HTTPМетод>, <HTTPЗапрос>, <ИмяВыходногоФайла>) Примечание: При использоватения метода GET тело запроса на сервер отправлено не будет. |
|||
17
Garykom
гуру
03.10.19
✎
22:35
|
(16) Ну значит обломс.
Попробуй чем то другим тем же Postman или curl проверить. |
|||
18
OpKc
04.10.19
✎
06:30
|
(13) Возможно, свобода и толерантность в вопросах гендерной идентификации добралась и до HTTP-запросов и теперь любой запрос, вне зависимости от наличия у него тела, может быть GET-запросом. Так же, как и любой дедушка с уем может сменить пол в документах на Жо.
|
|||
19
craxx
04.10.19
✎
06:39
|
(0)никак. только в POST
|
|||
20
PloAl
04.10.19
✎
07:57
|
(0) В get не бывает тела.
Данные в вашем случае это параметры, параметры от урл отделяются знаком вопроса. Должно быть что то вроде /api/getStatus?Id=123456789&Id_doc=555 |
|||
21
VKS
04.10.19
✎
11:24
|
Действительно нужно делать через тело get-запроса. Как мне подсказали некий "сырой запрос" когда шлет raw json
Попробовал это сделать в postman, да действительно все работает. Но теперь не пойму, как это сделать на стороне 1С. Кто сталкивался, подскажите как сделать подобное? |
|||
22
Garikk
04.10.19
✎
11:39
|
(14) а толку, его любой прокси поломает... это только браузеры можно обновлять по десять раз в месяц
|
|||
23
Daluvan
04.10.19
✎
11:41
|
(21) В 1с гет нет тела есть только заголовок. В пост ещё тело. Попробуй через заголовок передать.
|
|||
24
Garykom
гуру
04.10.19
✎
11:47
|
(21) Пиши в 1С чтобы платформу исправили под современный RFC который допускает тело у GET.
|
|||
25
VKS
04.10.19
✎
11:48
|
(23) такой вариант перепробовал и в 1с и в postman. И через параметры и через заголовки. Работает только через тело
|
|||
26
Daluvan
04.10.19
✎
12:02
|
(25) Ну тогда на с++ к примеру или скриптах и вставь в 1с.
|
|||
27
manc88
04.10.19
✎
12:31
|
Попробуй через winhttp если на винде сидишь:
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Open("GET", "{url подключения}/api/getStatus", Ложь); WinHttp.Send(ТвойДжейсон); Если WinHttp.Status = 200 Тогда Сообщить(WinHttp.ResponseText); КонецЕсли; |
|||
28
VKS
04.10.19
✎
13:01
|
кстати да, попробую такой вариант, спасибо
Пока сделали через опу, сперва коопсайт получает данные с api, а потом уже классическим get-запросом с параметрами отдает в 1с |
|||
29
Скиурус
04.10.19
✎
13:15
|
(0)должно быть:
?data="{id:123456789,Id_doc:555}" Экранировку символов 1С сама сделает |
|||
30
VKS
04.10.19
✎
13:43
|
нет, не работает этот вариант. Тут именно вся фишка передавать json в теле запроса, а не в адресе ресурса
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |