InmoDir

Información para desarrolladores

Ejemplos con JSON

Ejemplos prácticos mediante JSON: Fotografías de un anuncio

  1. Introducción
  2. Conexión remota al servidor de InmoDir
  3. Parámetros de datos
  4. Parámetros: Código único del anuncio
  5. Comprendiendo el resultado
  6. Resultado: Separar la información de las fotografías del anuncio
  7. Resultado: Separar los valores de cada fotografía
  8. Ejemplos de conexión remota
  9. Ejemplos de conexión remota: cURL
  10. Ejemplos de conexión remota: file_get_contents()
  11. Ejemplos de conexión remota: fopen()
  12. Resultado final

Introducción

Esta opción permite obtener una lista de las fotografías de un anuncio. De esta forma, en la página de la inmobiliaria es posible imprimir las fotos cuando el visitante del sitio web selecciona un anuncio.

Vamos a explicar aqui cómo obtener la información de las fotografías de un anuncio accediendo a una URL de InmoDir indicando el código de la inmobiliaria y el código del anuncio (icode, acode).

Conexión remota al servidor de InmoDir

Al igual que sucede cuando se obtiene información de un anuncio, la URL a utilizar para obtener las fotografías del anuncio será la siguiente:
http://es.inmodir.com/lab/json/adspics/, que deberá llevar los dos parámetros que identificarán a la inmobiliaria y al anuncio. De esta forma aparecerá un listado de las fotos y sus respectivos textos descriptivos.

http://es.inmodir.com/lab/json/adspics/?icode=12345678901234567890123456789012&acode=12349874563217531596548521346798

Parámetros de datos

Para obtener la información de un anuncio, primero hay que identificarlo, y esto se hará con un código que es único por cada anuncio que, de la misma forma que se identifica a la inmobiliaria con un código único icode, se utilizará un código para el anuncio: acode. Esto es exactamente igual a cuando se solicita ver información de un anuncio.

Parámetros: Código único del anuncio

En el ejemplo se indican los dos valores con unos números inexistentes, pero en el caso real, el primer parámetro icode será el código único de la inmobiliaria y el segundo parámetro mediante la variable acode que se obtiene por ejemplo de la lista de anuncios tal como se explicó en el capítulo anterior.

Comprendiendo el resultado

Al final de este capítulo daremos ejemlos de tres maneras diferentes para que el sitio web de la inmobiliaria que estamos desarrollando se conecte de forma remota con la base de datos de InmoDir a la URL que se utiliza para hacer correr este script (indicada en el inicio de este capítulo). Ahora damos por sentado que esa conexión se establece y obtenemos lo que se muestra a continuación a modo de ejemplo.

De manera muy similar a cuando se solicita una lista de anuncios de la inmobiliaria, al solicitar la lista de fotografías de un determinado anuncio, la información aparecerá de la isguiente forma:

{
"optnumber":3,
"opterror":"",
"optdata":
 [
  {
   "adpic_file":"http://cles1.inmodir.com/annpics/1054136935324733478826.jpg",
   "adpic_desc":"Cocina",
  },
  {
   "adpic_file":"http://cles1.inmodir.com/annpics/1054136935324733478986.jpg",
   "adpic_desc":"Salón-comedor",
  },
  {
   "adpic_file":"http://cles1.inmodir.com/annpics/1054136935324733472448.jpg",
   "adpic_desc":"Frente de la finca",
  }
 ]
}

A simple vista observamos al comienzo tres variables: optnumber, opterror y optdata.

La primera variable, optnumber, indica la cantidad de registros encontrados, en el ejemplo: 3 forografías del anuncio. También podría ser 0 (el número cero) si no hubiese encontrado registros ó -1 (menos uno) si se hubiese producido un error.

La segunda variable, opterror, aparecerá sin valor (vacía) o con un número si se hubiese producido un error. Hay información sobre los posibles errores en la lista de códigos de errror por si se desea personalizar el texto del error para cada caso.

Por último la tercera variable, optdata, que será un array con los datos necesarios, en este caso con la lista de fotografías del anuncio. Los contenidos estarán divididos en llaves {} agrupando cada fotografía donde habrá índices y valores para cada dato.

Ya que se trata de una lista de fotografías, los índices y valores dentro del array de la variable optdata se compone de la siguiente manera:

adpic_file Es URL absoluta de la fotografía.
adpic_desc Es el texto de la descripción de la fotografía

Resultado: Decodificar el resultado obtenido

Ya que la forma en que aparece la información en este método está pensada para ser empleada mediante JSON, utilizaremos la función json_decode() y así convertir el string codificado en JSON en una variable de PHP.

Tal como se indicó antes, al final de este capítulo se darán tres ejemplos para obtener de manera diferente esta información, la cual quedará guardada en una variable a la que llamaremos: $inmodata.

En el siguiente ejemplo nos aseguramos que la variable $inmodata ha sido definida y que es diferente de 'nada', si es así procederemos a lanzar la función json_decode() convirtiendo su contenido en las tres variables PHP necesarias para trabajar: $optnumber, $opterror y $optdata.

<?php
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = json_decode(trim($inmodata), true); // Decodificamos.
 echo"<br />Registros: ".$inmodata_array['optnumber']; // Cantidad de fotografías del anuncio.
 echo"<br />Error: ".$inmodata_array['opterror']; // Codigo de error (si hay).
 echo"<br />Contenido: ".$inmodata_array['optdata']; // Array de fotografías.
}//fin caso hay valor
?>

Resultado: Separar los valores de cada fotografía

Dando por sentado que ya nos hemos conectado remotamente a la base de datos de InmoDir y almacenado el resultado en la variable $inmodata. Recuerda que al final se darán ejemplos para que tu sitio web de conecte de forma remota.

En el script anterior hemos decodificado el resultado obtenido en la variable $inmodata mediante la función json_decode formando la variable $inmodata_array, obteniendo las tres valores necesarias para los datos del anuncio $inmodata_array[optnumber], $inmodata_array[opterror] y $inmodata_array[optdata]. Ahora trabajaremos con el tercer valor que posee los contenidos, en este caso: la lista de anuncios.

Lo que haremos ahora, es ampliar este script separando los valores de cada fotografía e imprimiendo los resultados de la lista. El script a continuación reemplaza el anterior, pues es el mismo pero ampliado:

<?php
/* - - - - - - Imprimir lista de fotografías (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = json_decode(trim($inmodata), true); // Decodificamos.
 echo"  <div>Registros: ".$inmodata_array['optnumber']; // Cantidad de fotografías del anuncio.
 echo"<br />Error: ".$inmodata_array['opterror']; // Codigo de error (si hay).
 echo"</div>\n";
 foreach($inmodata_array['optdata'] as $fotografias)
 {
  // Imprimimos la fotografía
  echo"  <div style=\"border:3px solid #ccc;width:300px;height:300px;margin:10px;padding:10px;float:left;overflow:hidden;\">";
  echo"<img src=\"".$fotografias['adpic_file']."\" style=\"width:250px;\" alt=\"".$fotografias['adpic_desc']."\" />";
  echo"<br />Descripción: ".$fotografias['adpic_desc'];
  echo"</div>\n";
 }//fin foreach
}//fin caso hay valor
else{echo"No se obtuvieron datos. \n";}
/* - - - - - - Imprimir lista de fotografías (fin) - - - - - - */
?>

Ejemplos de conexión remota

Como ya se indicó al inicio de este capítulo, para obtener hacer correr este script y obtener los resultados necesarios nos tenemos que conectar a la siguiente URL: http://es.inmodir.com/lab/tab/adspics/. Con dos parámetros, que serán el código de la inmobiliaria, indicado con el parámetro icode y el código del anuncio, con el parámetro acode. Ahora veremos ejemplos de tres maneras diferentes para que nuestro sitio se conecte de forma remota con la base de datos de InmoDir y almacenar la información requerida en una variable a la que lamaremos $inmodata.

Tomar en cuenta que antes de aplicar la función, se forzará a interpretar el resultado según la codificación UTF-8, esto evitará problemas con los acentos y apóstrofes. Lo único que tendrás que modificar con tus propios datos son los contenidos de las tres variables que aparecen alcomienzo de cada script, donde pone: "Valores", sobre todo las dos últimas variables $inmoscript_icode y $inmoscript_moreparams.

Conectarse y obtener los datos utilizando las librerías de cURL

<?php
/*
 * Obtener de forma remota con cURL
 * la lista de anuncios de mi cliente en InmoDir.
 */

/* Valores. */
$inmoscript_url = "http://es.inmodir.com/lab/json/adspics/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&acode=12349874563217531596548521346798"; // aCode del anuncio.
/* Funciones. */
$ch = curl_init($inmoscript_url.$inmoscript_icode.$inmoscript_moreparams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(curl_exec($ch) === false)
{
 echo'Curl error: '.curl_error($ch);
}
 else
{
 curl_setopt($ch, CURLOPT_URL, $inmoscript_url.$inmoscript_icode.$inmoscript_moreparams);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_ENCODING, "UTF-8");
 $inmodata = curl_exec($ch); // Ejecutar  
 curl_close($ch); // Cerrar  
 /* Imprimimos para verificar. */
 echo$inmodata;
}
?>

Conectarse y obtener los datos utilizando la función file_get_contents()

<?php
/*
 * Obtener de forma remota con la función file_get_contents
 * la lista de anuncios de mi cliente en InmoDir.
 */

/* Valores. */
$inmoscript_url = "http://es.inmodir.com/lab/json/adspics/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&acode=12349874563217531596548521346798"; // aCode del anuncio.
/* Funciones. */
$opts = array(
  'http'=>array(
   'method'=>"GET",
   'header'=>implode("\r\n", array('Content-type: text/plain; charset=utf-8'))
  )
);
$context = stream_context_create($opts);
$inmodata = file_get_contents($inmoscript_url.$inmoscript_icode.$inmoscript_moreparams,false, $context);  
/* Imprimimos para verificar. */
echo$inmodata;
?>

Conectarse y obtener los datos utilizando la función fopen()

<?php
/*
 * Obtener de forma remota con fopen
 * la lista de anuncios de mi cliente en InmoDir.
 */

/* Valores. */
$inmoscript_url = "http://es.inmodir.com/lab/json/adspics/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&acode=12349874563217531596548521346798"; // aCode del anuncio.
/* Funciones. */
$opts = array(
  'http'=>array(
   'method'=>"GET",
   'header'=>implode("\r\n", array('Content-type: text/plain; charset=utf-8'))
  )
);
$context = stream_context_create($opts);
$inmodata = fopen($inmoscript_url.$inmoscript_icode.$inmoscript_moreparams, "r", false, $context);
$inmodata = stream_get_contents($inmodata);
/* Imprimimos para verificar. */
echo$inmodata;
?>

Resultado final

Como notarás, en los tres métodos de conexión, las funciones ya están establecidas, simplemente puedes hacer copiar & pegar. Como ya se comentó antes, lo único que deberás modificar son las tres variables que corresponden a los datos específicos, donde se indica mediante el comentario Valores, las variables son: $inmoscript_url, $inmoscript_icode y $inmoscript_moreparams.

Recuerda que al probarlo es muy probable que algunos caracteres y apóstrofes se vean un poco "raros" a pesar de codificarlo en UTF-8. Con el siguiente código php que genera un código html puedes imprimir el resultado, el siguiente código podrías colocarlo a continuación de algunos de los tres scripts anteriores, el que hayas utilizado, reemplazando el comentario que decía: "Imprimimos para verificar...", simplemente haz copiar & pegar:

<?php
/*
 * Continuación del script php que se conecta y obtiene los datos.
 * En este caso imprime el resultado generando una página web con código html.
 * Esto iría en reemplazo de donde pone 'Imprimimos para verificar.'
 */

echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
echo"<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"es-es\">\n";
echo" <head>\n";
echo"  <title>Prueba función adslist de InmoDir</title>\n";
echo"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"; // Importante!
echo" </head>\n";
echo" <body>\n";
/* - - - - - - Imprimir lista de fotografías (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = json_decode(trim($inmodata), true); // Decodificamos.
 echo"  <div>Registros: ".$inmodata_array['optnumber']; // Cantidad de fotografías del anuncio.
 echo"<br />Error: ".$inmodata_array['opterror']; // Codigo de error (si hay).
 echo"</div>\n";
 foreach($inmodata_array['optdata'] as $fotografias)
 {
  // Imprimimos la fotografía
  echo"  <div style=\"border:3px solid #ccc;width:250px;height:250px;margin:10px;padding:10px;float:left;overflow:hidden;\">";
  echo"<img src=\"".$fotografias['adpic_file']."\" style=\"width:250px;\" alt=\"".$fotografias['adpic_desc']."\" />";
  echo"<br />Descripción: ".$fotografias['adpic_desc'];
  echo"</div>\n";
 }//fin foreach
}//fin caso hay valor
else{echo"No se obtuvieron datos. \n";}
/* - - - - - - Imprimir lista de fotografías (fin) - - - - - - */
echo" </body>\n";
echo"</html>\n";
?>