Имя: Пароль:
1C
1С v8
Как передать тело в get-запросе?
0 Kukr47
 
01.12.23
11:20
Тело запроса: {
  "ids": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ]
}

Запрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);      
Запрос.УстановитьТелоИзСтроки(JsonСтрока);
Ответ = Соединение.Получить(Запрос);

код такой, в ответ приходить ответ {"errors":["request body has an error: value is required but missing"]}
в документации указан только один параметр, так что я ничего не забыл
пробовал передавать параметры в адресе как параметры, ответ все тот же
пробовал через post, в ответ приходит 405 что метод должен быть get
Не понимаю в чем проблема...
1 p-soft
 
01.12.23
11:25
на сколько помню, метод гет исключает передачу параметров через тело запроса. уточните что конкретно ждет веб-сервер..
2 mTema32
 
01.12.23
11:44
Никак в 1С. Используйте нормальный сервис, где нет таких извращений.
3 GenAcid
 
01.12.23
11:45
Это не по стандарту, но возможно. Код в (0) корректный. А вот насколько json соответствует ожиданиям сервера - вопрос к документации или тем кто находится на стороне сервера.
4 Donkey_hot
 
01.12.23
11:48
(0) Хотелось бы взглянуть на фрагмент скриншота документации
5 GenAcid
 
01.12.23
11:52
Похоже в новых версиях платформы поменяли поведение. Где-то в районе 8.3.13 у меня такой фокус проходил. А 8.3.22 в СП так:
"ВызватьHTTPМетод
...
Примечание:
При использоватения метода GET тело запроса на сервер отправлено не будет."
6 boozin
 
01.12.23
11:56
В Get-запросе можно указывать параметры.
7 Kukr47
 
01.12.23
11:58
(4) https://postimg.cc/ZB40QzrV
(5) версия 8.3.17
8 Kukr47
 
01.12.23
11:58
(5) в 8.3.17 Такое же примечание, печально...
9 Kukr47
 
01.12.23
12:05
(2) Можете подсказать такие сервисы?
10 Garykom
 
01.12.23
12:09
(0) используй нечто внешнее относительно 1С для подобных извратов
В 1С решили что для GET нельзя тело, хотя стандарт HTTP это допускает
11 Kukr47
 
01.12.23
12:22
(10) можете дать примеры нечто внешнего через что можно это сделать?
12 Garykom
 
01.12.23
12:57
(11) https://qna.habr.com/q/905295
https://stackoverflow.com/questions/978061/http-get-with-request-body

Суть или неправильно апи поняли или кривой сервер/сервис
Большая часть клиентов/серверов не умеет body для get-запроса
13 Garykom
 
01.12.23
12:58
Имхо попробуй для начала POST сделать
14 Kukr47
 
01.12.23
13:06
(13) Делал, в ответ приходит что нужен get
15 Garykom
 
01.12.23
13:14
(14) напиши в поддержку и попроси примеры на других ЯП как к ним запросы делать
16 Garykom
 
01.12.23
13:19
или попробуй установить Content-Length в заголовках реальный для get

кстати большинство прокси обрежет тело для get
17 Kukr47
 
01.12.23
13:39
(15) Спасибо, буду пробовать
18 Garikk
 
01.12.23
16:37
(10) не совсем так, стандарт это не допускает, но зачастую это работает, но использовать такое крайне нежелательно
+и да, прокси испортит
19 novichok79
 
01.12.23
16:46
можно по TCP IP кинуть текстом через внешнюю компоненту какую-нибудь... но это дичь.
20 vde69
 
01.12.23
16:51
Заголовки.Добавить("ids","497f6eca-6276-4993-bfeb-53cbbbba6f08")
Запрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);      
Ответ = Соединение.Получить(Запрос);
21 vde69
 
01.12.23
16:54
ну или в виде параметра

&ids=497f6eca-6276-4993-bfeb-53cbbbba6f08
22 Garikk
 
01.12.23
17:10
(21) вот так только
&ids=["497f6eca-6276-4993-bfeb-53cbbbba6f08"]

так это кстати сработать должно
23 Garykom
 
01.12.23
18:07
(18) "A payload within a GET request message has no defined semantics;
   sending a payload body on a GET request might cause some existing
   implementations to reject the request."
https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.1
24 Garykom
 
01.12.23
18:08
(23)+ "Полезная нагрузка в сообщении с запросом GET не имеет определенной семантики; отправка тела полезной нагрузки по запросу GET может привести к отклонению запроса некоторыми существующими реализациями."
25 iva_nov
 
05.12.23
15:12
cURL откликается

GET https://statistics-api.wildberries.ru/api/v1/delayed-gen/tasks HTTP/1.1
Authorization: {{wildberries_stat_token}}
Content-Type: application/json

{
  "ids": ["xxxxxx-xxx-xxxx-xxxx-xxxxxx"]
}
26 Kukr47
 
05.12.23
15:46
(24) все равно приходит ошибка {"errors":["request body has an error: value is required but missing"]}

ждет именно тело, не помогает впихивание тела в параметр)
27 Kukr47
 
05.12.23
16:02
(25) из 1с отправляли? Если да то можно пример как реализовали? через онлайн тестер приходит такой же ответ:
{
    "errors": ["request body has an error: value is required but missing"]
}

curl запрос сформировал такой:
curl -XGET -H 'Authorization: 123321' -H "Content-type: application/json" -d '{
  "ids": ["372f3dcf-289d-4fdd-ba50-4e92a3eaedff"]
}' 'https://statistics-api.wildberries.ru/api/v1/delayed-gen/tasks'
28 Kukr47
 
05.12.23
16:04
(25) Да и рыская по форумам везде пишут что curl равносилен HTTPСоединению, есть ли реальная разница?
29 Kukr47
 
05.12.23
16:27
подозреваю? что всё это мёртвая затея и нужно просто ждать фикса api...
30 sitex
 
naïve
05.12.23
16:31
Что то мне подсказывается что это raw json
31 sitex
 
naïve
05.12.23
16:32
проверить не могу токена нет.
32 Kukr47
 
05.12.23
17:28
(30) ? не понял, Content-type: application/json
тело я отправляю в raw json, что проверять?
Закон Брукера: Даже маленькая практика стоит большой теории.