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