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.
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.?
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?
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.
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.
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
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.
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.
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, no hace login en el dvr
alguna idea
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.
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.