REST API GET com Header

Olá pessoal, estou realizando integração via REST com o Fluig e me deparei na necessidade de realizar a criação de alguns datasets com requisições GET/POST passando parametros no Headers, alguem já precisou fazer o mesmo e conseguiu se sim poderia comentar ou demonstrar o código?

Obrigado a todos!

Eu tenho aqui um dataset que faz um GET em um serviço que cadastrei nos serviços REST do fluig.

Seto a url do serviço no fluig e identifico ela com o serviceCode, mostrado abaixo.

O endpoint funciona como path param, utilizo para fazer login no serviço


 function defineStructure() {
     addColumn("nom_sims");
     addColumn("nom_abreviado");
     addColumn("nom_cliente");
     setKey(["nom_sims"]);
     addIndex([ "nom_sims", "nom_abreviado", "nom_cliente"]);
 }

 function onSync(lastSyncDate) {
         var dataset = DatasetBuilder.newDataset();

         try{
            var clientService = fluigAPI.getAuthorizeClientService();

            var data = {
                    companyId : getValue("WKCompany") + '',
                    serviceCode : 'getCliente',
                    endpoint : 'usr=super&pwd=trs@super',
                    method : 'get',
                    timeoutService: '100'
                }

            var vo = clientService.invoke(JSON.stringify(data));
            log.info(vo.getResult())
            if(vo.getResult()== null || vo.getResult().isEmpty()){
                throw new Exception("Retorno está vazio");
            }else{
                var y = vo.getResult().split("\n");
                for(var i=1;i<y.length;i++){
                    var x = y[i].substr(4).split("  ");
                    x = x.filter(function(entry) { return entry.trim() != ''; });

                     dataset.addOrUpdateRow([ x[1], x[0], x[2]]);
                }
            }

         } catch(err) {
            log.info(err);
        }
         return dataset;
     }

Pedro, na versão 1.6.3 do Fluig através do AuthorizeClient (fluigAPI.getAuthorizeClientService()), ainda não é possível adicionar headers no client, isso será possível a partir da próxima versão a ser lançada (1.6.4).

Na 1.6.3, você terá que chamar o HttpClient direto no seu script do Dataset. Algo assim:


function createDataset(fields, constraints, sortFields) {

    var request = new org.apache.http.client.methods.HttpGet("http://187.94.56.129:8051/rmsrestdataserver/rest/RhuEntidadesData");

    request.addHeader("Authorization", "Basic bWVzdHJlOmludGVncmFjYW8=");

    var client = org.apache.http.impl.client.HttpClientBuilder.create().build();

    var response = client.execute(request);

    var responseContent = org.apache.http.util.EntityUtils.toString(response.getEntity());

    return buildDataset(responseContent);
}

function buildDataset(content) {
    var dataset = DatasetBuilder.newDataset();

    var json = JSON.parse(content).data;
    var columns = new Array();

    for (var j = 0; j < json.length; j++) {
        var keys = Object.keys(json[j]);
        for (var k = 0; k < keys.length; k++) {
            if (columns.indexOf(keys[k]) == -1) {
                columns.push(keys[k]);
                dataset.addColumn(keys[k]);
            }
        }
    }

    for (var j = 0; j < json.length; j++) {
        var row = new Array();
        for (var i = 0; i < columns.length; i++) {
            var value = json[j][columns[i]];
            if (typeof value == 'object') {
                row.push(JSON.stringify(value));
            } else {
                row.push(value);
            }
        }
        dataset.addRow(row);
    }

    return dataset
}

Note que usei o header Authorization pra fazer a autenticação no REST, mas serve para qualquer header que você queira adicionar.