Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 09:00:25

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Как сделать запросы на озоне?
Страниц: [1]   Вниз
Печать
Автор Тема: Как сделать запросы на озоне?  (Прочитано 3063 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mike_B
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« : 12.02.2021, 19:41:08 »

Добрый день всем!
Наверняка тема обсуждалась, поискал, не нашел. Ткните куда-то или подскажите.
У Озона есть API, описано на cb-api.ozonru.me/apiref/ru/
Искал и пробовал адаптировать примеры, но что-то не догоняю.
Например, авторизация в тестовую среду в документации описана так:

Код:
GET / HTTP/1.1
Host: cb-api.ozonru.me
Client-Id: 836
Api-Key: 0296d4f2-70a1-4c09-b507-904fd05567b9
Content-Type: application/json

Как это сделать из экселя?
Или вот запрос информации о товаре:

Код:
POST /v2/product/info HTTP/1.1
Host: api-seller.ozon.ru
Client-Id: 836
Api-Key: 0296d4f2-70a1-4c09-b507-904fd05567b9
Content-Type: application/json

{
  "offer_id": "item_6060091",
  "product_id": 7154396,
  "sku": 150583609
}

Как послать запрос? В ответ будет XML, чем его удобнее разбирать, кстати?
Что лучше использовать: WinHttpRequest, MSXML2.XMLHTTP60, MSXML2.ServerXMLHTTP ? Везде разное.
Понимаю, для здешних гуру это плевый вопрос, но вот пока лишь простой GET с параметрами в адресе использовал, и только.
Спасибо.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 13.02.2021, 15:16:53 »

для здешних гуру это плевый вопрос
Интересное мнение. А на чем основано, если не секрет? Запросы к сайтам не бывают плевыми - в теме надо разбираться. И каждый сайт может подкинуть своих проблем. Вы сами пробовали хоть чуть-чуть разобраться с задачей? Не увидел в Вашем сообщении ни намека на собственные попытки хоть как-то решить вопрос. Даже элементарно кода обращения к сайту нет.
Как послать запрос?
А что в документации по этому поводу написано? Какой метод использовать? POST, GET? Какой формат указывать? json или иной?
В ответ будет XML, чем его удобнее разбирать, кстати?
тем, что написано специально для работы с XML узлами - XMLDOM. Только не очень понятно с чего Вы решили, что ответ получите именно в XML, если запрос посылается в формате json...В общем надо сначала документацию нормально покурить по OZON, прежде чем что-то начать делать.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Mike_B
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #2 : 13.02.2021, 20:39:07 »

Уважаемый Дмитрий!
Знаю Вас по инету, как очень сведущего человека. Многими подсказками из Ваших сообщений на разных форумах пользовался и "мотал на ус". Спасибо!

Здесь сложность была в том, что в документации приведены примеры запросов, подходящие под php (как я понимаю), и преобразовать их в VBA - неясно, как.
Кроме того, не зря я подозревал, что есть разница в разных объектах. WinHttp.WinHttpRequest.5.1 делал перекордировку UTF -> 1252 и получалась каша.
После подсказки об этом получилось вот что (работает). Остается разбор JSON, это уже следующий этап (после кучи попыток вчера замотался и ошибочно написал, что XML).

Код:
Sub SendOzon()
   Const MULTIPART_BOUNDARY As String = "---------------------------0123456789012"
   Dim xhr As Object, myUrl As String, sURL As String, sMethod As String, sData As String, sHeaders As String
   Dim clientId As String, apiKey As String, ff As Integer

   Set xhr = CreateObject("Microsoft.XMLHTTP")
   If xhr Is Nothing Then Set xhr = CreateObject("MSXML2.ServerXMLHTTP")

   ' По https://cb-api.ozonru.me/apiref/ru/#t-title_products_info
   sURL = "https://cb-api.ozonru.me"      ' URL отладки
   sMethod = "/v1/category/attribute"
   sData = "{""category_id"": 17036076, ""language"": ""EN""}"
   clientId = "836"                    ' ID клиента (отладка)
   apiKey = "0296d4f2-70a1-4c09-b507-904fd05567b9" ' ключ (отладка)

   myUrl = sURL & sMethod

   xhr.Open "POST", myUrl, False
   xhr.setRequestHeader "User-Agent", "Mozilla 5.0"
   xhr.setRequestHeader "Content-Type", "application/json; charset=windows-1251"
   xhr.setRequestHeader "Content-Length", Len(sData)
   xhr.setRequestHeader "Client-Id", clientId
   xhr.setRequestHeader "Api-Key", apiKey
   xhr.send "" + sData  'postBody 'URLEncode(sEntityBody)

   Range("A2").Value = xhr.responseText   ' что получили
   Range("A3").Value = sData              ' что слали

   Set xhr = Nothing
End Sub

« Последнее редактирование: 13.02.2021, 20:41:11 от Mike_B » Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru