• Как использовать vkscript/хранимые процедуры в standalone vk приложении?

    @mtl Автор вопроса
    Хорошо, попробую объяснить подробней. Берём C++Builder, берем компоненты с палитры REST Client для работы с OAuth, отправки и приёма запросов к VK API.
    (Полезна только самая нижняя строка цитаты - ответ сервака)
    OAuth2Authenticator:
    • Authorization endpoint: _ttps://oauth vk com/authorize
    • Token Endpoint: _ttps://oauth vk com/blank.html
    • Client ID: Номер Standalone приложения в ВК
    • Response Type: Token
    • Scope: offline

    RESTClient:

    • Base URL: _ttps://api vk com

    RESTRequest:
    • Resource: method
    • ResourceSuffix: execute.имя_хранимой_процедуры

    Тыкаем 2 раза по Reqest'у.
    Автоматом формируется строка адреса: _tps://api.vk.com/method/access_token=...&v=5.34&user_id=...... Отправляется GET'ом или POST'ом.
    Результат:
    {
    "response":[]
    }


    Где тут ошибка? Наверное я что-то упускаю. Параметр какой-то, способ работы с execute.
    Я могу получить ответ в виде обычного JSON'а, дальше парсинг и работа с данными. С обычными методами типа video.get катит на ура. Но их надо выполнять много и часто. Виной всему ограничения VK API.
    Есть 2 возможных решения проблемы - хранимые процедуры или текст скрипта. Хранимую процедуру я уже пытался вызвать, ответ пустой. В браузере работает, на CPP нет.
    Второй вариант предпочтительней т.к. легче добавить или удалить параметры в скрипте и отправить его POST'ом. Только как? На вид RESTRequest умеет лишь отправлять URI с параметрами + по мелочи прокси и кодировка.
    Ответ написан
  • [CBuilder XE6]Получить значение из JSON?

    @mtl Автор вопроса
    Опять двадцать пять) Если бы для меня это было делом 5 минут, то помощи я бы не просил)
    Это касается кода, а не самих объектов, значений и массивов...
    Находил я эти статьи т.к. они обычно в первых рядах.

    UPD: Нащупал пример:
    #include <Data.DBXJSON.hpp>
    #include <memory>
    ...
    	std::auto_ptr<TJSONObject> object(static_cast<TJSONObject*>(TJSONObject::ParseJSONValue(Memo1->Lines->Text)));
    	TJSONObject* response = static_cast<TJSONObject*>(object->Get("response")->JsonValue);
    	TJSONArray* items = static_cast<TJSONArray*>(response->Get("items")->JsonValue);
    	TJSONObject* id = static_cast<TJSONObject*>(items->Get(0));
    	ShowMessage(id->GetValue("id")->ToString());

    и тд...Крутотень) Вроде получилось
    Ответ написан
    Комментировать