Jump to content
StraightFree

Acessar WebService feito em DataSnap com AngularJS ou JavaScript

Recommended Posts

Senhores, bom dia!

 

Preciso da ajuda de vocês para tentar solucionar esse problema.

 

Sou programador Delphi e precisei fazer o acesso aos dados gerados pelo sistema desktop pela web. 

 

Optei por utilizar o DataSnap para criar o WebService, por já ter mais familiaridade com a ferramenta.

 

Assim, comecei a fazer os testes para acessar o WebService através de um cliente HTML + AngularJS. Criei no DataSnap 4 webservice:

function Produto : TJSONArray;
function updateProduto(AValue: TJSONObject) : TJSONObject;
function acceptProduto(AValue: TJSONObject) : TJSONObject;
function cancelProduto(AKey: String) : TJSONObject;

O DataSnap faz o mapeamento automático para cada uma das funções de acordo com o método HTTP chamado na requisição, conforme abaixo:

Cliente Requisição		DataSnap Chama a function
GET				Produto
POST				updateProduto
PUT				acceptProduto
DELETE				cancelProduto

Se eu chamar os métodos através de um cliente Delphi chamado RestDebbuger (acompanha o delphi) ou um software de teste de webservice chamado SoapUI consigo acessar todas as funções do webservice sem nenhum problema.

 

Criei um cliente para consumir esses webservices em HTML e JavaScript/AngularJS, nesse cliente consigo consumir sem problemas os métodos GET e POST. No entanto, quando tento acessar o método PUT ou DELETE sempre me retorna um erro 500 no servidor. Fiz o debbug da aplicação Delphi após fazer a chamada pelo cliente AngularJS e percebi que não está chegando o método ao servidor e por isso ele dá um erro na requisição. 

Chamando esse método pelo RestDebbuger e pelo SoapUI funciona normalmente.

 

Alguém saberia me dizer por qual motivo não consigo acessar esse método pelo angularJS?

 

Qualquer ajuda será muito bem vinda.

 

Obrigado!

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By clickanapolis
      Boa tarde pessoal, desculpa se postei em lugar errado, mais não sei aonde postar essa minha dúvida. Estou finalizando um projeto que consiste em uma plataforma de processo seletivo e na etapa final os candidatos iram fazer uma prova online.
       
      O cliente me perguntou se é possível bloquear o navegador, tipo se ele sair do navegador ou mudar de aba tipo o sistema finalizar a prova do candidato, visto que o sistema irá identificar que ele foi fazer uma pesquisa.
       
      Eu particularmente não vi nada igual ate hj e não sei se existe algo seja em javascript ou qualquer outro modo de fazer isso.
    • By Baby01
      Prezados, bom dia.
       
      Gostaria de uma ajudar, sobre um script que estou criando. 
       
      Não estou conseguindo fazer a comparação entre data e horário, tipo assim : eu quero que quando o usuário faça um agendamento ex: data 15/07/2019 horário: 10h00 ás 12h00, não pode ter outro agendamento nessa data 15/07/2019 e nem entre esse horário 10h00 às 12h00.  Mais pode ter outro agendamento nessa data 15/07/2019, mais não no mesmo horário.
      Abaixo está meu script : 
       
       
       
      <!DOCTYPE html>
      <html>
      <head>
          <title>GESTÃO DE CASOS</title>
          <meta lang="pt-br" charset="utf-8">
          <link rel="icon" type="imagem/png" href="../gestao/img/logo.png" />
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <script type="text/javascript" src="../bootstrap/sweetalert/dist/sweetalert.js"></script>
      </head>
      <body>
      <?php
      if(!isset($_SESSION)) 
          { 
              session_start(); 
          } 
              date_default_timezone_set('America/Sao_Paulo');
              header('Content-type: text/html; charset=utf-8');
              
              if (isset($_POST["submit"])) {
              $hr_agendamento = ('H:i:s');
              $now = date('Y-m-d H:i:s');
              $planoID = $_POST["planoID"];        
              $pacienteID = $_POST["pacienteID"];
              $unidadeID = $_POST["unidadeID"];
              $dt_programada = $_POST["dt_programada"];
              $hr_inicial = $_POST["hr_inicial"];
              $hr_final = $_POST["hr_final"];
              $atendimentoID = $_POST["atendimentoID"];
              }
              
              $unidade = $_SESSION['unidade_referencia'];
              
              include ("../administracao/conn.php");
              
              $agenda = "SELECT a.hr_inicial, a.hr_final, DATE_FORMAT(  `dt_programada` ,  '%d/%m/%Y' ) AS  `data_formatada` , b.unidadeID, b.unidade_referencia
                          FROM tb_agenda a
                          INNER JOIN tb_unidade b ON a.unidadeID = b.unidadeID
                          WHERE b.unidade_referencia =  $unidade";
                  
                 /* nessa parte que não estou conseguindo fazer a comparação , consigo pegar a variável que o usuário digita, porém não estou conseguindo trazer do banco de dados*/        
              IF ( (["dt_programada"] == $_POST["dt_programada"]) && (["hr_inicial"] == $_POST["hr_inicial"]) && (["hr_final"] == $_POST["hr_final"])) {
                  echo "<script>    swal('ATENÇÃO','DATA E HORÁRIO JÁ CADASTRADO', 'warning').then(function() {window.location = '../plano/escolha_paciente_plano.php';});</script>";    
                  
              }
                  ELSE
                  {
                  
              $sql = "INSERT INTO tb_agenda (planoID, pacienteID, unidadeID, dt_programada, hr_inicial, hr_final, atendimentoID) values ('$planoID','$pacienteID', '$unidadeID', '$dt_programada', '$hr_inicial', '$hr_final', '$atendimentoID')";
              
              if (mysqli_query($connect, $sql)) 
              {
                  echo "<script>swal('BOM TRABALHO!', 'AGENDA CADASTRADA COM SUCESSO!', 'success').then(function() {window.location = '../plano/escolha_paciente_plano.php';});</script>";
                  $x = 'Agenda criada com sucesso';
                  include "../administracao/agenda_log.php";
              } 
              else 
              {
                  echo "<script>swal('INFELIZMENTE', 'NÃO FOI POSSÍVEL CADASTRAR A AGENDA', 'warning').then(function() {window.location = '../plano/escolha_paciente_plano.php';});</script>" . $sql . "<br>" . mysqli_error($connect);
                  $x = 'Não foi possível criar a agenda';
                  include "../administracao/agenda_log.php";
                  
                  }
              }
              
      ?>
      </body>
      </html>
    • By Ewfc2005
      Queria saber como faço para fazer um texto aparecer ao rolar a pagina
      igual ao desse site: https://ciesalon.com/services
    • By FilipeON
      Olá Sou iniciante em Javascript... Preciso de ajuda para a seguinte questão:
      Tenho duas FUNÇÕES e preciso executa-las de forma aleatória, já tentei de varias formas, mas sem sucesso, alguém pode me ajudar?
      Basicamente o que preciso é que toda vez que a pagina WEB for carregada uma das duas funções seja sorteada e executada.
       
      As funções são:
      function vt1(){fireEvent (document.getElementById('bt-1'), 'click');} function vt2(){fireEvent (document.getElementById('bt-2'), 'click');}
       
    • By Danilo - Jesus voltará!
      Olá, estou fazendo um cálculo de horas para cartão ponto em php e jquery... o cálculo do php já consegui um satisfatório. Preciso agora ao preencher os campos que são gerados dinamicamente de 1 a 31 que são os dias do mês, ao sair do campo Jornada (horas de trabalho), ele envie via ajax os valores preenchidos nesses 4 campos anteriores que são 4 inputs de tempo (time).
      Eu consegui recuperar individualmente, mas ele passa a chamada da função em todos, se dou um alert por exemplo ele percorre todos os campos dinâmicos para aí ir para o outro input, que no caso acontece a mesma coisa, segue o script que utilizei para pegar o valor do input individual, aí preciso que não percorra todos e pegue apenas o valor de cada um no onblur do campo jornada conforme está na figura e me retorne para os campos específicos com os dados que pegarei no php,. Espero ter sido claro, se alguém puder ajudar eu agradeço.
       
      $(document).ready(function() { $(":input").blur(function() { var id = $(this).attr('id'); var value = $(this).val(); alert(id + " " + " " + value); }); }); O que preciso está na figura abaixo:
       

       
      Aguardo, se alguém puder ajudar...agradeço
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.