@rafaelrubin , de jeito simples: esses métodos “padrões” do Fluig não fazem requisições multipart/form-data. Eles servem basicamente só pra trocar informações json.
Qualquer coisa que fuja desse padrão de enviar “texto”/json precisa ser feita manualmente.
O jeito mais fácil é ter o arquivo localmente no Fluig, aí você já o pega e envia.
Se você só tem o Base64 aí terá que pesquisar como converter ele pra um formato que o form-data receba. Não parei pra ver se do jeito que fez a conversão funciona, pois sempre que fiz algum envio eu tinha o arquivo salvo no volume do Fluig.
Segue um exemplo no qual chamo um endpoint multipart/form-data com autenticação Bearer Token.
/**
* Efetua a requisição POST ao Gescon enviando o arquivo
*
* @param {string} codigoContrato
* @param {number} idComprometimento
* @param {number} tipoArquivo
* @param {string} descritivo
* @param {com.fluig.sdk.api.document.DocumentVO} arquivo
* @returns {boolean}
* @throws {string}
*/
function sendAttachmentToGescon(codigoContrato, idComprometimento, tipoArquivo, descritivo, arquivo) {
var gesconConfig = getGesconRestConfig();
var filePath = fluigAPI.getTenantService().getTenantData(["dirDefault"]).get("dirDefault")
+ java.io.File.separator
+ "public"
+ java.io.File.separator
+ arquivo.getDocumentId()
+ java.io.File.separator
+ arquivo.getVersion()
+ java.io.File.separator
+ arquivo.getPhisicalFile()
;
var entityBuilder = org.apache.http.entity.mime.MultipartEntityBuilder.create();
entityBuilder.setMode(org.apache.http.entity.mime.HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addTextBody("idComprometimento", idComprometimento);
entityBuilder.addTextBody("tipoId", tipoArquivo);
entityBuilder.addTextBody("descritivo", descritivo, org.apache.http.entity.ContentType.create("text/plain", "UTF-8"));
entityBuilder.addBinaryBody(
"arquivo",
new java.io.File(filePath),
org.apache.http.entity.ContentType.DEFAULT_BINARY,
arquivo.getPhisicalFile()
);
var httpPost = new org.apache.http.client.methods.HttpPost(
gesconConfig.domain
+ "/contratos/"
+ codigoContrato
+ "/comprometimentos/"
+ idComprometimento
+ "/anexos"
);
httpPost.setHeader("Authorization", gesconConfig.token);
httpPost.setEntity(entityBuilder.build());
var httpClient = org.apache.http.impl.client.HttpClients.createDefault();
var response = JSON.parse(org.apache.http.util.EntityUtils.toString(httpClient.execute(httpPost).getEntity()));
httpClient.close();
return response.success == true && response.data == "OK";
}