Работа с запросами 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:
- Получить весь массив и разобрать его самостоятельно.
- Указать нужные объекты выборочно и добавить их к запросу. Например: 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