3
是否可以在NIFI處理器中使用xmlHttpRequest來調用遠程休息服務?在我的情況下,ExecuteScript
處理器(使用Javascript)無法評估XMLHttpRequest
;有沒有類似的解決方案可以用來獲取響應數據?如何在NiFi中調用遠程REST服務
var OutputStreamCallback = Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
Date.prototype.isValid = function() {
return (Object.prototype.toString.call(this) === "[object Date]")
&& !isNaN(this.getTime());
};
var flowFile = session.get();
if (flowFile != null) {
var fromDate = flowFile.getAttribute('fromDate')
var uid = flowFile.getAttribute('uid')
var xmlhttp = null;
var result = null;
xmlhttp = new XMLHttpRequest();
if (typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('application/json');
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open('GET', "similar url here WorkInfo?dateFrom=?&uid=?", true);
xmlhttp.send(dateFrom, uid);
if (xmlhttp.status == 200) {
result = 'WorkInfoDate'
}
flowFile = session.putAttribute(flowFile, 'filename', fromDate + '_' + result);
flowFile = session.write(flowFile,
new OutputStreamCallback(function (outputStream) {
outputStream.write(command.getBytes(StandardCharsets.UTF_8))
}));
session.transfer(flowFile, REL_SUCCESS)
}
我曾經想過這個nifi處理器,但在這種情況下,我無法想象如何在我的情況下通過並更改參數(這對獲取方法是必不可少的),它們每分鐘都會變化 –
URL屬性支持表達式語言所以你可以有一個url:http:// someservice?param1 = $ {v1}&param2 = $ {v2},然後你可以在這個處理器之前使用UpdateAttribute將v1和v2設置爲屬性。 –