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