Работа с запросами JSON в C++

Всем привет, нужна помощь с отправкой и получением 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"} по которому он, из этих данных, должен был взять кусок. Подскажите пожалуйста, в чем ошибка?

Разобрался. Это называется "частичный ответ". Т.е., есть 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


Ответы (0 шт):