Estoy tratando de configurar WebAPI de Tropo con un sitio Drupal, y pensé en crear una devolución de llamada hook_menu () por ejemplo.com/tropo, luego usar la devolución de llamada hook_menu que acabo de crear para consumir la llamada API de Tropo ( que contiene una simple matriz de datos JSON), luego responda.
Puedo hacer la parte de respuesta con bastante facilidad ... construir los datos, drupal_json_output () y salir (eso solo devuelve el JSON básicamente).
La parte con la que tengo problemas es para obtener los datos que se envían a la devolución de llamada del menú / tropo ... No puedo acceder a ningún dato utilizando cualquiera de los siguientes:
$json = file_get_contents("php://input"); // returns NULL
(a continuación utiliza el módulo inputstream :)
$json = file_get_contents("drupal://input"); // also returns NULL
Verifiqué lo que hacen otros módulos, y parece que usan hook_init para tomar el JSON. ¿Es este el método preferido? Me encantaría poder hacerlo en hook_menu y usar mi propio camino y tal ...
Alternativamente, ¿sería mejor escribir mi propio script PHP y ejecutarlo fuera de Drupal, simplemente haciendo un arranque para la base de datos si es necesario?
Respuestas:
Bueno, resulta que estaba obteniendo los datos, pero olvidé decodificarlos ...
En mi devolución de llamada hook_menu:
Entonces puedo jugar todo lo que quisiera con el valor $ recibido.
Además, el flujo de entrada del módulo es muy valiosa para dejar a llegar al flujo de entrada más de una vez (si se intenta usar
php://input
más de una vez, la segunda vez, y los siguientes, devolverá NULL).Como nota adicional, acabo de notar hoy un nuevo módulo que podría ser una forma aún más simple de manejar esto: Contenido como JSON
fuente
El servidor REST que forma parte del módulo Servicios lo hace automáticamente para JSON y para otros formatos: http://drupal.org/project/services
También es compatible con Inputstream (Inputstream se creó para manejar tanto la verificación OAuth como la decodificación de servicios de la misma secuencia).
fuente