[SOLUCIONADO]Problemas con Servicios Web - Rest

Buenos días, estamos intentando utilizar servicios web en un sistema propio desarrollado en toba pero no logramos hacerlo funcionar.
Utilizamos como guía el toba referencia, donde el ejemplo es un mismo sistema como cliente y servidor. Pero el servicio web de nuestro sistema no funciono…entonces creamos una nueva operación y configuramos en nuestro sistema propio tal cual estaba en el referencia…(estructura de directorios, archivos php, etc) …siempre hablando del modulo de servicios web y tampoco funciono. El último intento fue agregar en el toba referencia la operación que teníamos en nuestro nuevo sistema que trabaja con servicios web y esto si funciono… por lo que suponemos que hay una configuración dentro del proyecto que estamos omitiendo, pero no encontramos que es.

Buscamos en la Api y en el foro pero no encontramos respuesta a nuestro problema.

En la línea 6191 del log adjunto se puede ver el error que aparece… aparentemente llega un valor nulo a la operación json() y salta el error…

Estamos utilizando toba versión 2.5. SO Debian 7. Postgresql 9.1.

Agradecemos cualquier ayuda que nos puedan brindar.

Saludos.


sistema.sql (503 KB)

Hola Alejandra,

En que version de la rama 2.5 estan?.. hay varias 2.5.0 → 2.5.4
Por otra parte, la implementacion de rest que se encuentra en dicha version sufrio varios cambios a posterior, incluso correccion de bugs… con lo cual el problema puede venir desde varios puntos.

Vamos viendo cuales fueron los pasos para descartar que se hayan olvidado algo:

  • Crearon un recurso REST en el directorio dir_proyecto/php/rest/XX o al menos pusieron un archivo recurso_XX.php en la carpeta correspondiente.
  • Crearon en el editor de toba en la pestaña datos, una nueva entrada para que el cliente sepa que existe un WS accesible de tipo REST
  • Configuraron el archivo instalacion/i__desarrollo/p__toba_referencia/rest/servidor.ini y pusieron el tipo de autenticacion deseado, el formato de la respuesta y las url que debian autenticarse
  • Configuraron el archivo instalacion/i__desarrollo/p__toba_referencia/rest/servidor_usuarios.ini y pusieron usr/pwd segun el tipo de auntenticacion
  • Crearon una carpeta dentro de instalacion/i__desarrollo/p__toba_referencia/rest/ con el nombre del WS que va a invocar el cliente y dentro de dicha carpeta colocaron un archivo cliente.ini donde constan las configuraciones basicas para conectarse al Ws.

Con todo eso cumplimentado, el WS no funciono, tenes a mano el error que les daba?.
Luego me decis que replicaron en toba_referencia el esquema y ahi si les funciono, salvo por el error de json.
Segun veo de la linea que me marcaste, lo que dice es que la respuesta no se puede interpretar como Json… no que viene vacia, de hecho pareciera que esta devolviendo un nro 4.
Esto puede venir dado por como envien la respuesta ustedes o por algo que saco texto antes de que envien la misma y genero que se rompa el formato json (puede ser un simple echo).
Pasame mas info acerca del caso, es mas si podes pegame un pedacito del codigo del recurso para poder orientarte mejor.

Saludos

Buenos días! Gracias por la pronta respuesta…

Estamos trabajando en la versión 2.5.0

Vamos viendo cuales fueron los pasos para descartar que se hayan olvidado algo:
  • Crearon un recurso REST en el directorio dir_proyecto/php/rest/XX o al menos pusieron un archivo recurso_XX.php en la carpeta correspondiente.

Si… se puede ver en los adjuntos “directorio dir_proyecto php rest XX.png”, “recurso_XX.php”, y archivo recurso_personas.php
- Crearon en el editor de toba en la pestaña datos, una nueva entrada para que el cliente sepa que existe un WS accesible de tipo REST
Si.... se puede ver en adjunto "WS accesible de tipo REST.png"
- Configuraron el archivo [b]instalacion/i__desarrollo/p__toba_referencia/rest/servidor.ini[/b] y pusieron el tipo de autenticacion deseado, el formato de la respuesta y las url que debian autenticarse
Servidor.ini: [/list] ``` autenticacion = digest

;;
;;Opciones que recibe la librería - > rest/rest.php
;;
[settings]
;formato_respuesta = json
;url_protegida = /.*/



<blockquote>- Configuraron el archivo [b]instalacion/i__desarrollo/p__toba_referencia/rest/servidor_usuarios.ini[/b] y pusieron usr/pwd segun el tipo de auntenticacion</blockquote>
servidor_usuarios.ini:

[toba]
password = probando

[probando]
password = probando


<blockquote>- Crearon una carpeta dentro de [b]instalacion/i__desarrollo/p__toba_referencia/rest/[/b] con el nombre del WS que va a invocar el cliente y dentro de dicha carpeta colocaron un archivo cliente.ini donde constan las configuraciones basicas para conectarse al Ws.</blockquote>

Dentro de la carpeta rest_localhost esta el archivo cliente.ini y su contenido:

[conexion]
;;Recuerde dejar una barra (/) al finalizar la URL
to = “https://url.a.proyecto/rest/
auth_tipo = digest
auth_usuario = toba
auth_password = probando



<blockquote>Con todo eso cumplimentado, el WS no funciono, tenes a mano el error que les daba?.</blockquote>
"Error en pantalla.png" dentro del zip

<blockquote>Luego me decis que replicaron en toba_referencia el esquema y ahi si les funciono, salvo por el error de json.</blockquote>
En el referencia no dio error, para nada, funciono correctamente. 
En resumen sería... hicimos un esquema de servicios web en un proyecto nuevo, no funciono.
Replicamos lo mismo en el toba referencia y funciono!(ningún error)
Para probar replicamos la parte de servicios web que trae el referencia a nuestro proyecto y no funciono....(de ahí es el error de json.)

<blockquote>Según veo de la linea que me marcaste, lo que dice es que la respuesta no se puede interpretar como Json... no que viene vacia, de hecho pareciera que esta devolviendo un nro 4. 
Esto puede venir dado por como envien la respuesta ustedes o por algo que saco texto antes de que envien la misma y genero que se rompa el formato json (puede ser un simple echo).
Pasame mas info acerca del caso, es mas si podes pegame un pedacito del codigo del recurso para poder orientarte mejor.

Saludos</blockquote>
Tratando de resolver el problema seguimos el código al las clases del nucleo y las librerias... por eso pensabamos que hasta ahi llega nulo.... es como que no llega a encontrar el recurso... Ojala puedas ayudarnos, si necesitas mas datos del problema decime.

Gracias!!

---

[Foro.zip|attachment](upload://jCFbNdkiQ3bRGMQ67RrN9wEihKA.zip) (191 KB)

Hola Alejandra

Te diria que si pueden se pasen a la version 2.5.4 ya que entre medio se cambio totalmente la libreria REST y seria mejor que ya lo puedan dejar de la nueva manera, sino despues van a tener que volver a modificarlo.

Vamos viendo cuales fueron los pasos para descartar que se hayan olvidado algo: Si... se puede ver en los adjuntos "directorio dir_proyecto php rest XX.png", "recurso_XX.php", y archivo recurso_personas.php
Bien, segun veo hicieron una copia de lo que habia en toba_referencia, tambien hay un directorio [i]probando[/i] (que supongo es donde pusieron su propio recurso). Pasame una captura de ese dir, que seria el que genera el inconveniente original.
Si.... se puede ver en adjunto "WS accesible de tipo REST.png"
Bien, barbaro
Servidor.ini:
autenticacion = digest

;;
;;Opciones que recibe la librería - > rest/rest.php
;;
[settings]
;formato_respuesta = json
;url_protegida = /.*/
Fijate que te falta descomentar el formato de la respuesta y la ER que se usa para proteger las URLs.
servidor_usuarios.ini:
Joya.
Dentro de la carpeta rest_localhost esta el archivo cliente.ini y su contenido:
Joya.
"Error en pantalla.png" dentro del zip
Ok, el tema con ese error es que no se alcanza a distinguir el status code que devuelve el server. Supongo que debe haber pasado sin pena ni gloria, de lo contrario deberia en el log deberia figurar algo. Mas alla de eso, si le comentan la linea que intenta pasar a json el response, que ven por pantalla?
En el referencia no dio error, para nada, funciono correctamente. En resumen sería... hicimos un esquema de servicios web en un proyecto nuevo, no funciono. Replicamos lo mismo en el toba referencia y funciono!(ningún error) Para probar replicamos la parte de servicios web que trae el referencia a nuestro proyecto y no funciono....(de ahí es el error de json.)
Lo unico que veo diferente es el archivo de config [b]servidor.ini[/b] que te marcaba antes, despues de eso al menos de configuracion no pareciera haber otro tema. Si me llamo la atencion que definieran un metodo [i]probando[/i] dentro del recurso, lo mas comun es que la accion este prefijada con el metodo que se usa, pero bueno eso lo analizamos luego del cambio en el archivo de config.
Tratando de resolver el problema seguimos el código al las clases del nucleo y las librerias... por eso pensabamos que hasta ahi llega nulo.... es como que no llega a encontrar el recurso... Ojala puedas ayudarnos, si necesitas mas datos del problema decime.

Si no llega a encontrar el recurso, que puede ser… fijense que coincidan los nombres con la ruta que se supone que deberia estar, cualquier cosa miren la wiki que tiene un enlace a github. Pero como te decia, eso es para la version cambiada de la libreria asi que van a tener que actualizarse a la 2.5.4 por ahi .

Saludos

Buenos días! Muy bien!! Gracias por la respuesta…cambiaremos de versión entonces…y si surge algo volvemos a consultar.

Cerramos el tema.

Muchas gracias!!