|
Тело для запроса PUT | ☑ | ||
---|---|---|---|---|
0
location
naïve
22.03.22
✎
15:58
|
Подскажите пож-та, как правильно написать тело для запроса. по этому примеру.
curl -X PUT \ https://api.allegro.pl/sale/offer-quantity-change-commands/{commandId} \ -H 'Authorization: Bearer {token}' \ -H 'Content-Type: application/vnd.allegro.public.v1+json' \ -H 'Accept: application/vnd.allegro.public.v1+json' \ -d '{ "modification":{ "changeType":"FIXED", -- supported values: “FIXED” (quantity), “GAIN” (add/remove items. To remove items, provide the value with a minus sign) "value":30 -- value to be changed to (FIXED) or by which you want to change the quantity (GAIN) }, "offerCriteria":[ { "type":"CONTAINS_OFFERS", "offers":[ -- a list of offers you want to edit { "id":"7660573029" }, { "id":"7644576839" } ] } ] }' т.е. пишу следующее HTTPСоединение = новый HTTPСоединение("api.allegro.pl", , , ,, , Новый ЗащищенноеСоединениеOpenSSL); headers = Новый Соответствие; UID = Новый УникальныйИдентификатор(); headers.Вставить("Content-Type", "application/vnd.allegro.public.v1+json"); headers.Вставить("Authorization", "Bearer " + ПолучитьДанныеТокена()); headers.Вставить("Accept", "application/vnd.allegro.public.v1+json"); HTTPЗапрос = Новый HTTPЗапрос("sale/offer-quantity-change-commands/+UID", headers); получается то что в -d надо как то прописать? sale/offer-quantity-change-commands/+UID+?modification и дальше не знаю ( Подскажите плз. |
|||
1
Кир Пластелинин
22.03.22
✎
16:35
|
могу предположить, что в теле запроса необходимо передавать json заданной структуры и со своими значениями
|
|||
2
location
naïve
22.03.22
✎
16:52
|
а можно пример передачи json?
|
|||
3
Кир Пластелинин
22.03.22
✎
17:01
|
ну например вот (вырвано из контекста).
SMSСообщение_JSON = Новый Структура; SMSСообщение_JSON.Вставить("from" , SMSСообщение["Отправитель"]); SMSСообщение_JSON.Вставить("to" , НомерТелефона); SMSСообщение_JSON.Вставить("message", SMSСообщение["ТекстСообщения"]); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, SMSСообщение_JSON); ТелоЗапроса = ЗаписьJSON.Закрыть(); HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); только для http-соединения надо будет использовать Записать (Put). ну и кодировка другой скорей всего будет |
|||
4
arsik
гуру
22.03.22
✎
17:11
|
(0) Смотри ВызватьHTTPМетод
|
|||
5
location
naïve
23.03.22
✎
16:16
|
вот пример еще одного изменения
curl -X PATCH ‘https://api.allegro.pl/sale/product-offers/9531382307’ -H 'Authorization: Bearer {token}' -H 'Accept: application/vnd.allegro.public.v1+json' -H 'Content-Type: application/vnd.allegro.public.v1+json' -d ’{ "sellingMode": { "price": { "amount": "50", "currency": "PLN" } } }’ Когда вы получите статус 200 OK - мы вернем данные предложения с запрошенными изменениями. вот например мне надо изменить количество "stock": { "available": 0, "unit": "string" }, когда получаю данные по товару выглядит вот так "stock": { "available": 23, "unit": "UNIT" }, я отправляю такой запрос, получаю 200 но данные не меняются. HTTPСоединение = новый HTTPСоединение("api.allegro.pl", , , ,, , Новый ЗащищенноеСоединениеOpenSSL); headers = Новый Соответствие; headers.Вставить("Content-Type", "application/vnd.allegro.public.v1+json"); headers.Вставить("Authorization", "Bearer " + access_token); headers.Вставить("Accept", "application/vnd.allegro.public.v1+json"); HTTPЗапрос = Новый HTTPЗапрос("sale/product-offers/"+id+"", headers); Сообщение_JSON = Новый Структура; Сообщение_JSON.Вставить("stock", новый Структура()); Сообщение_JSON.Вставить("available", "35"); Сообщение_JSON.Вставить("unit", "unit"); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Сообщение_JSON); ТелоЗапроса = ЗаписьJSON.Закрыть(); HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); HTTPОтвет = HTTPСоединение.Изменить(HTTPЗапрос); Если HTTPОтвет.КодСостояния = 200 Тогда Ответ = HTTPОтвет.ПолучитьТелоКакСтроку(); КонецЕсли; |
|||
6
Kassern
23.03.22
✎
16:18
|
(5) Не работает, или что?
|
|||
7
location
naïve
23.03.22
✎
16:21
|
ну данные остаются старые я ему передаю 35, а в ответе приходит информация по товару 23 количество
|
|||
8
Kassern
23.03.22
✎
16:23
|
(7) пробовали использовать Ответ=ВызватьHTTPМетод("PUT",HTTPЗапрос) ?
|
|||
9
Kassern
23.03.22
✎
16:23
|
*конечно HTTPСоединение.ВызватьHTTPМетод("PUT",HTTPЗапрос)
|
|||
10
Kassern
23.03.22
✎
16:27
|
у вас есть документация API с доступными методами? Может там надо иначе тело запроса передавать. На самом сервисе проверяли обновление остатков?
|
|||
11
location
naïve
23.03.22
✎
16:27
|
так HTTPСоединение.Изменить(HTTPЗапрос) - это же то что просят (curl -X PATCH). Изменяет данные на сервере при помощи PATCH-запроса.
|
|||
12
Kassern
23.03.22
✎
16:28
|
(11) возможно и так, но имхо, лучше явно написать нужный http метод
|
|||
13
location
naïve
23.03.22
✎
16:29
|
(10) да выше написал что написано в документации.
вот еще Как отредактировать предложение Благодаря PATCH /sale/product-offers/{offerId} вы можете легко редактировать свое предложение - вы можете изменить любое поле предложения, и при этом вам не нужно передавать всю его модель. |
|||
14
location
naïve
23.03.22
✎
16:29
|
и пример как это сделать в (5)
|
|||
15
Kassern
23.03.22
✎
16:32
|
(14) я в (5) в упор не вижу структуру, которую вы пытаетесь отправить вот этим кодом
Сообщение_JSON.Вставить("stock", новый Структура()); Сообщение_JSON.Вставить("available", "35"); Сообщение_JSON.Вставить("unit", "unit"); |
|||
16
Kassern
23.03.22
✎
16:32
|
(14) из примера в (5) я вижу лишь тело:
"sellingMode": { "price": { "amount": "50", "currency": "PLN" } |
|||
17
Kassern
23.03.22
✎
16:33
|
в общем, скиньте, что у вас получается в "ТелоЗапроса " перед отправкой и покажите такую-же структуру в документации к этому API
|
|||
18
location
naïve
23.03.22
✎
16:58
|
(16) хорошо вот как это описать в теле для 1с?
|
|||
19
location
naïve
23.03.22
✎
17:28
|
(17) вот что получается в теле запроса
{ "stock": {}, "available": "35", "unit": "unit" } |
|||
20
Ёпрст
23.03.22
✎
17:28
|
(18) ты передаешь хрень:
{ "stock": {}, "available": "35", "unit": "unit" } |
|||
21
Ёпрст
23.03.22
✎
17:30
|
(19)
Сообщение_JSON = Новый Структура; Сообщение_JSON.Вставить("stock", новый Структура("available,unit",35,"unit")); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Сообщение_JSON); ТелоЗапроса = ЗаписьJSON.Закрыть(); |
|||
22
Kassern
23.03.22
✎
17:34
|
(19) а теперь сравните с:
"stock": { "available": 23, "unit": "UNIT" } Думал сами заметите пустую структуру в stock, которую вы никак не заполняете, но вам уже подсказали в (20) |
|||
23
location
naïve
23.03.22
✎
17:37
|
(21) вот уже так, выдает другую ошибку.
{"errors":[{"code":"InvalidUnitException","message":"Unprocessable Entity","details":null,"path":"stock.unit","userMessage":"Given stock unit is not valid. Use one of: UNIT, PAIR, SET."}]} |
|||
24
location
naïve
23.03.22
✎
17:40
|
все разобрался регистр влияет UNIT надо писать.
|
|||
25
Kassern
23.03.22
✎
17:41
|
(24) ага, вам об этом и пишут) Use one of: UNIT, PAIR, SET
|
|||
26
location
naïve
23.03.22
✎
17:49
|
всем спасибо. заменились данные
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |