entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Enviar datos desde HTML a un Web Service

Mi consulta es como enviar datos de un formulario html simple a un web service y que despues esto se registre en una base de datos.

  • En la base de datos hay una tabla usuario con 2 campos username y password.
  • Y formulario html de lo mas simple.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <form id="form1" method="post" action="#">
    <div>
        <div>
            <input id="Text1" type="text" name="txt1"/>
        </div>
        <div>
            <input id="Text2" type="text" name="txt2" />
        </div>
        <div>
            <input id="Button1" type="button" name="enviar" value="Enviar" />
        </div>
    </div>
    </form>
</body>
</html>

Y los datos que ingreso que los envie a un web service rest que esta en c# por ejemplo y esto despues los registre en la db. lo hize usando una vista en aspx y va bien usando la ayuda del visual studio, el problema es como enviar desde html.

0voto

bl4z3r comentado

¿Es un Web Service o un REST Api?

0voto

Raverito comentado

Rest no es también un servicio web? Acaso api rest es otra cosa dime las diferencias porque según tengo entendido SOA y REST son web service

0voto

bl4z3r comentado

@Raverito REST no es un servicio web. Es parte de SOA al igual que los WS. La diferencia entre REST y WS es la forma de consumirla.

2 Respuestas

3votos

MitsuGami Puntos8010

Cuando tienes un servicio REST generalmente tienes un API que servirá como endpoint para diversos clientes (escritorio, web y móvil).

Un servicio web puede consumirse por medio de la url directamente en el caso de métodos GET. Ya que por defecto las peticiones HTTP son GET, si en tu REST tienes métodos para POST, PUT o DELETE, se deben consumir mediante un cliente.

El cliente es independiente de en qué tecnología se encuentra implementado el REST. Por ejemplo, en tu caso que es web, puedes crear un cliente simple con ajax.

Veamos un ejemplo en Java. Tenemos un REST cuya base es /api/usuarios. Aquí hay un método POST que registra un usuario.

@Path("/nuevo")
@POST
@Produces({"application/json"})
@Consumes({"application/json"})
public Response crearUsuario(Usuario usuario) {
    Usuario creado = servicioUsuario.crear(usuario);
    return Response.status(Status.OK).entity(creado).build();
}

La conversión JSON a clase lo hace automáticamente la librería Jackson

Y nuestro cliente solo es una simple petición AJAX a dicho método. Veamos como con unas cuántas líneas puedes hacer crear un nuevo usuario y agregarlo a tu datatble en tu HTML automáticamente:

$scope.usuarios = [];
$scope.nuevoUsuario = {};

$http({
   url: '/api/usuarios/nuevo',
   method: 'POST',
   data: $scope.nuevoUsuario
}).then(function success(response) {
   // el JSON devuelto del método del REST se
   // almacena en la variable data
   $scope.usuarios.push(response.data);
}, function fail(error) {
   console.log(error);
});

Como ves, es muy sencillo consumir un REST. Te recomiendo uses AngularJS para consumirlos, te simplifica muchísimo las tareas. Te dejo en un enlace mi repositorio en GitHub donde consumo una API REST + JPA con AngularJS:Consumir una API REST con AngularJS

0voto

wroque comentado

no hay autentificación!, digame si es posible establecer este tipo de seguridad en los framework spring o struct...

1voto

MitsuGami comentado

¿Quién te dijo que no existe seguridad en los RESTs? Revisa este tutorial al respecto: Autenticación REST.

Si decides irte por un framework como Spring MVC o JSF, puedes usar JAAS (en caso deJSF) o Spring Security para roles y permisos.

2votos

cobasESP Puntos19650

Pues en primer lugar, el action del form debe contener la url a la que enviar los datos.
Y el input type button, deberia ser un type submit, para validar y enviar el form.

Con todo esto hecho solo tienes que recoger los datos en el webservice, te quedaria asi:

<form id="form1" method="post" action="mywebservice.php">
    <div>
        <div>
            <input type="text" name="nombre"/>
        </div>
        <div>
            <input type="text" name="password" />
        </div>
        <div>
            <input type="submit" name="enviar" value="Enviar" />
        </div>
    </div>
    </form>

Te e quitado el atributo id ya que por el form se envia el name no el id, y e añadido el tipo submit, en action e usado un .php pero es un ejemplo tu lo cambias por el webservice que tu tengas.

Espero que te ayude

0voto

wroque comentado

pero si el servicio retorna un xml, simplemente nada (void) y si se necesita autentificar al usuario, o el servidor no permite un cruce de dominios. Me parece una mala idea de ejecución.

yo primeramente revisaría la especificación del servicio.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta