Versão atual:

Como chamar REST Datasul via ajax ?

Não estou conseguindo realizar o consumo de método REST padrão do Datasul via ajax no javascript. Num primeiro momento eu executo um método para obter o token Uso esse link:

/dts/datasul-rest/resources/login?username=login-do-usuario&password=JXsYCCQOkqXETUeWsCPTXemTJds= O retorno desse link é o token e gravo no campo do formulário. Logo após executo outro método passando esse token.

/dts/datasul-rest/resources/dbo/inbo/boin142 (especificamente este método retorna os grupos de estoque do Datasul) No navegador aparece como erro e inspecionando o retorno ele parece desconhecer o token enviado no header pois aparece a página do login.

Realizando tudo isso diretamente no navegador funciona direitinho, inclusive no SOAPUI ou no Postman, mas dentro da página via javascript usando $ajax não funciona.

Será que cada chamada $ajax possui sua própria "sessão"?, pois na segunda o token passado não seria da sessão. Se for isso como resolver? Existe outra forma de chamar o método já passando o token?

$.ajax({
    url: '<host>/dts/datasul-rest/resources/dbo/inbo/boin142',
    dataType: "json",
    type: "GET",
    crossDomain: true,
    success: function(res, status, xhr) {
    console.log("RES:"    + res);
    console.log("status:" + status);
    console.log("xhr:"    + xhr);
    },
    error: function (xhr, ajaxOptions, thrownError) {
      console.log("ERRO NO RETORNO");
      console.log(xhr);
      console.log(xhr.status);
    },       
    beforeSend: setHeader           
  });       

function setHeader(xhr) {      
  console.log('header...');     
  token = $('#token').val();
  xhr.setRequestHeader("Authorization", "cookie:JOSSO_SESSIONID=" + token);   
}

Versão (1):

Ver a versão formatada

Como chamar REST Datasul via ajax ?

Comentário

new question