Algunos web services y envio de variables POST

He publicado un pequeño articulo en mi blog, donde explico como enviar variables GET y POST a paginas web, y recibir su retorno.
Lo que nos permitirá utilizar algunos servicios de API de productos web, así como obtener los cookies enviados por las paginas.


http://blog.digitalsoftlab.com/2012/02/enviar-variables-post-con-velneo/

Un saludo,
filipeagg@gmail.com

[attachment=21844,1707]

@filipe
.
.
Muchísimas gracias
.
.
saludos
Antonio Vela
http://www.velavisual.com

Muchas gracias, Filipe!!!

un saludo
José Luis
http://www.ascsl.com

Hola filipeagg, podrias decirme si la aplicacion que has realizado podria servirme para a traves de la API de Google maps mandar una direccion y que me devolviese las coordenadas de dicha direccion y poder guardarlas en variable, campo etc.?

Hola el link de tu blog no funciona!

Lo siento, el blog fue desactivado.

Me podrias decir algun manual o como hacer para mandar los campos del formulario a una web externa, pasando las varbales por post? y si es posible ver lo que recibe?

Hola Filipe

Es una pena que link no funcione, tengo un problema relacionado con el tema y veo que tu lo dominas y me puedes dar una guia,
ya que Velneo no accede al DOM de webs, necesito llenar un formulario externo desde velneo, como podria hacerlo rellenar un formulario que presenta una página html.

Gracias

Gabriel Alba

Hola gabriel,

Este post de Filipe se hizo cuando en su momento no habia forma de acceder al consumo de webservices asi que el se “invento” algo con el objeto TCP de velneo, pero ahora tienes la clase XMLHttpResquest de Velneo que es relativamente simple de usar y mucho más potente.

Un saludo,

Gracias por tu ayuda

Entiendo lo que me dices, pero he quedado varado con este tema. necesito puntualmente rellenar un formulario que presenta una página html.
soporte me ha dicho que no es posible hacerlo ya que Velneo no accede al DOM de webs.

El tema es que mi aplicacion debe conectarse con una web y me pide datos que debo llenar.
ejemplo http://181.48.49.26/mobile.html

Alguna ideas

Gabriel

http://181.48.49.26/mobile.html

Es una camara la idea es que la aplicacion guarde el usuario y contraseña y se conecte rellene y ver el video en el visor html.

Gabriel

Hola Gabriel.

Vamos a ver, necesitas unos mínimos conocimientos en HTML5 y del API de Velneo.
En realidad es muy sencillo resolver lo que planteas.

El formulario HTML de mobile.html envia un Request al servidor web de la DVR.
Si queremos automatizar el Login debemos usar la clase XmlHttpRequest del API de Velneo.

importClass("XMLHttpRequest")
var xhr = new XMLHttpRequest()
// Tipo de dato del Request
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
// Abrimos conexión con el script CGI del servidor (tomado del atributo ACTION del FORM)
xhr.open("POST", "http://181.48.49.26/login.cgi", false)
// Datos que necesita el script CGI para el Login
var cDatos = "id=usuario&passwd=1234&camera=1"
// Enviamos el Request POST con los datos
xhr.send(cDatos)

En el Response recibirás el mismo código HTML que recibiría el Usuario que rellena manualmente el formulario.
Como ves, no tiene nada que ver con el DOM.

Saludos
Paco Satué

Saludos

Muchas gracias por ayuda Paco, el que sabe sabe!

voy a probar tu solucion y te comento los resultados

Gabriel Alba

Saludos Paco

Disculpame mi ignoracia, he usado casi todo menos el api de velneo… como obtengo y cargo el Response en el visor html

Gracias

Gabriel

Hola Gabriel.

Si no quieres aprender el API de Velneo olvídate de XMLHttpRequest porque de lo contrario te vas a atascar con cada línea de código.

Otra solución es usar el API de HTML5 para los Formularios, eso sí, requiere un poco de javascript y conocer el DOM.
Genera el siguiente código HTML en un fichero temporal (con extensión html) y lo cargas en el Visor HTML de la forma habitual.

<html>
<head>
<title> 3R DVR Web 1.0.2.3 </title>
</head>
<script>
   function iniciar() {
      var loginForm = document.getElementById("login")
      var inputUsu = document.getElementById("usu")
      var inputPass = document.getElementById("pass")
      var inputCam = document.getElementById("cam")
      // Inserta los valores preestablecidos del formulario
      inputUsu.setAttribute("value", "<usuario>")
      inputPass.setAttribute("value", "<password>")
      inputCam.setAttribute("value", "<camara>")
      // Envía el Request
      loginForm.submit()
   }
   window.addEventListener("load", iniciar, false);
</script>
<body>
<FORM id=login name="mobile_login" METHOD="POST" ACTION="http://181.48.49.26/login.cgi">
<table width="250" height="100" border="0">
  <tr>
    <td>ID</td>
    <td> <INPUT id=usu TYPE=text NAME=id size=15></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><INPUT id=pass TYPE=password NAME=passwd size=15></td>
  </tr>
  <tr>
    <td>Camera(1~4)</td>
    <td> <INPUT id=cam TYPE=text NAME=camera size=15> </td>
  </tr>
  <tr>
    <td></td>
    <td><INPUT TYPE=submit value = "Login"></td>
  </tr>
</table>
</FORM>
</body>
</html>

Es otra solución más, aunque habrá cientos.

Saludos
Paco Satué

Saludos

Ya vi el tema de response

esta es la peticion:

importClass(“XMLHttpRequest”)
var xhr = new XMLHttpRequest()
xhr.responseType = “”
// Tipo de dato del Request
xhr.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”)
// Abrimos conexión con el script CGI del servidor (tomado del atributo ACTION del FORM)
xhr.open(“POST”, “http://181.48.49.26/login.cgi”, false)
// Datos que necesita el script CGI para el Login
//var cDatos = theRoot.varToString(“XHR_DATA”)
var cDatos = “id=admin&passwd=&camera=1”
// Enviamos el Request POST con los datos
xhr.send(cDatos)
theRoot.setVar(“HTTP”,xhr.response)

esta es la respuesta:

<HTML>
<HEAD>
<TITLE> 3R DVR Web 1.0.2.3 </TITLE>
</HEAD>
<BODY>

<script language=“JavaScript”>
function reloadImage() {
if (document.images) {
document.images.myImageName.src=‘image/1.jpg?’+(new Date()).getTime();
}
setTimeout(‘reloadImage()’,1000);
}
setTimeout(‘reloadImage()’,1000);
</script>
</BODY>
</HTML>

pero no carga nada, :frowning: no hace login en el dvr
alguna idea

Gracias

Gabriel Alba

Hola Gabriel.

Precisamente estás obteniendo un Response adecuado porque ha hecho login correctamente.
El problema es montar ese Response en el Visor HTML con el URL base adecuado, pero ese es otro tema que requiere conocer más a fondo el API de Velneo.

Olvídate de momento del XmlHttpRequest y prueba con el código HTML que te he propuesto.

Saludos
Paco Satué

Saludos

Voy a probarlo y te cuento el resultado

Gabriel

Saludos

Muchas gracias Paco Funciona perfectamente.

pero no funciona con
http://186.28.237.107

admin
ssp2015
sirve el mismo metodo?

Gabriel Alba

Hola Gabriel.

Por supuesto que no tiene NADA que ver.
El primer caso era un Login de los “chinos”, en este segundo caso estamos hablando de un Login “más serio y profesional”.

Tendrías que tener acceso al código javascript que hay en el fichero login.js.
Estoy seguro que en soporte de Hikvision te dan una solución.

Saludos
Paco Satué