Я использую Apama v10.3.1.Я использую встроенный контейнер Apama установки Cumulocity, и все, что я загружаю, - это монитор, а не весь проект Apama.В моем мониторе Apama я выполняю HTTP-запрос GET к API-интерфейсу Cumulocity REST для получения дополнительных параметров, необходимых для обработки моего монитора.
Моя проблема заключается в том, что при выполнении HTTP-запроса мне нужно предоставить пользователю ипароль, в противном случае я получаю 401 ошибку.Поскольку я не хочу жестко кодировать имя пользователя и пароль на моем мониторе, есть ли способ использовать учетные данные, которые встроенный контейнер Apama использует для связи с Cumulocity?Поскольку Apama общается с Cumulocity для обмена событиями, измерениями и т. Д., Я предполагаю, что где-то есть учетные данные.Так ли это, и если да, как я могу сказать моему монитору Apama использовать эти учетные данные?
Вот фрагмент кода:
monitor SampleAlarmRules {
action onload() {
monitor.subscribe(Alarm.CHANNEL);
monitor.subscribe(FindManagedObjectResponse.CHANNEL);
on all Alarm(type = "ax_UnavailabilityAlarm") as a {
onAlarm(a.source);
}
}
action onAlarm(string source) {
integer reqId := integer.getUnique();
send FindManagedObject(reqId, source, new dictionary<string,string>) to FindManagedObject.CHANNEL;
on FindManagedObjectResponse(reqId = reqId) as resp
and not FindManagedObjectResponseAck(reqId) {
ManagedObject dev := resp.managedObject;
dictionary<string, string> httpConfig := {
HttpTransport.CONFIG_AUTH_TYPE:"HTTP_BASIC"
//HttpTransport.CONFIG_USERNAME:"someUser",
//HttpTransport.CONFIG_PASSWORD:"somePassword"
};
HttpTransport httpTransport := HttpTransport.getOrCreateWithConfigurations("someBaseUrl", 80, httpConfig);
Request request := httpTransport.createGETRequest("/inventory/managedObjects/5706999?withParents=true");
request.execute(handleResponse);
}
}
action handleResponse(Response response) {
JSONPlugin json := new JSONPlugin;
if response.isSuccess(){
switch (response.payload.data as payload) {
case string: {
}
default: {
}
}
}
else {
print "###Request failed. Response status is: " + response.statusCode.toString() + " | " + response.statusMessage;
}
}
}
При такой конфигурации (пользователь и пароль)прокомментировал) Я получил следующее заявление печати:
Запрос не выполнен.Статус ответа: 401 |Несанкционированный
При включении пользователя и пароля запрос выполняется успешно.Однако я не хочу здесь жестко кодировать пользователя и пароль.
Кроме того, есть ли способ получить текущего арендатора из переменной окружения или чего-либо подобного, чтобы мне не пришлось усерднозакодировать базовый URL?
Спасибо, Матиас