Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2020, 13:08   #1
beruk
Пользователь
 
Регистрация: 20.10.2020
Сообщений: 13
По умолчанию Работа с запросами JSON

Всем привет, нужна помощь с отправкой и получением JSON.
За три дня перерыл и перепробовал все, что смог.
Опыт в программировании - 1 из 10.

Код:
hOpenHandle = InternetOpenA("Terminal", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hOpenHandle)
  {
  hConnectHandle = InternetConnectA(hOpenHandle, "api-demo.exante.eu", 
  /*INTERNET_DEFAULT_HTTPS_PORT*/80, "a0bf5e14-d039-451b-a2ea-fc5cf778f7da", 
  "kdyM5ITrvaMDie5YVrTi", INTERNET_SERVICE_HTTP, 0, 1);
    if (hConnectHandle)
      {
      DWORD dwBytesRead = 1024;
      TCHAR  szData[1024] = " ";
      hResourceHandle = HttpOpenRequestA(hConnectHandle, "GET", "/trade/2.0/orders", "HTTP/1.1", 
      NULL, NULL/*"application/json"*/, INTERNET_FLAG_RELOAD, 0);
                                    
      TCHAR postHead[46] = "Content-Type:application/json;charset=utf-8\r\n";
      TCHAR postData[50] = "{\"account\":\"MIA4198.001\",\"instrument\":\"SPY.ARCA\"}";              
   
      InternetReadFile(hResourceHandle, szData, sizeof(szData) - 1, &dwBytesRead);
 
      szData[dwBytesRead];
                    
      MessageBox(NULL, szData, "szData", MB_OK);
      szData[0] = 0;
      postData[0] = 0;
      dwBytesRead = 0;
                    
      InternetCloseHandle(hResourceHandle);
      InternetCloseHandle(hConnectHandle);
      }
 
   InternetCloseHandle(hOpenHandle);
}
Этот код возвращает мне данные (szData) по запросу, и я их вижу через MessageBox.
Проблема в том, что он возвращает данные по запросу api-demo.exante.eu/trade/2.0/orders, но игнорирует JSON {"account":"MIA4198.001","instrumen t":"SPY.ARCA"} по которому он, из этих данных, должен был взять кусок.
Подскажите пожалуйста, в чем ошибка?
beruk вне форума Ответить с цитированием
Старый 20.10.2020, 15:42   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от beruk Посмотреть сообщение
игнорирует JSON
В Windows нет поддержки JSON из коробки.
Обрабатывайте полученные данные сами.
waleri вне форума Ответить с цитированием
Старый 20.10.2020, 18:37   #3
beruk
Пользователь
 
Регистрация: 20.10.2020
Сообщений: 13
По умолчанию

Разобрался.
Это называется "частичный ответ".
Т.е., есть 2 способа получить данные запросом типа GET:
1. Получить весь массив и разобрать его самостоятельно.
2. Указать нужные объекты выборочно и добавить их к запросу.
Например: https://api-demo.exante.eu/trade/2.0/orders?limits=10
где:
адрес: https://api-demo.exante.eu/trade/2.0/orders
разделитель: ?
объекты (несколько через запятую): limits

Моя ошибка была в том, что я отправлял их как JSON в виде заголовка.

Примеры API поддерживающие частичные ответы:
https://www.baeldung.com/openapi-json-query-parameters
https://cloud.google.com/storage/docs/json_api
beruk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с JSON (System.JSON) nibufep Общие вопросы Delphi 3 19.04.2016 18:21
Работа с SQL запросами курбанниязов Помощь студентам 2 23.04.2014 17:00
Работа с запросами nikUta PHP 7 30.08.2012 09:01
работа в delphi с sql-запросами Olya_T Помощь студентам 2 09.12.2011 21:12
Работа с SQL-запросами Washington Общие вопросы Delphi 1 13.03.2007 01:28