Estou tentando configurar a WebAPI do Tropo com um site Drupal e pensei em criar um retorno de chamada hook_menu () por exemplo.com/tropo, depois usar o retorno de chamada hook_menu que acabei de criar para consumir a chamada API do Tropo ( que contém uma matriz de dados JSON simples) e responda.
Eu posso fazer a parte da resposta com bastante facilidade ... compilar os dados, drupal_json_output () e exit (que retorna o JSON basicamente).
A parte com a qual estou tendo problemas é obter os dados enviados para o retorno de chamada do menu / tropo ... Não consigo acessar nenhum dado usando um dos seguintes procedimentos:
$json = file_get_contents("php://input"); // returns NULL
(abaixo usa o módulo inputstream :)
$json = file_get_contents("drupal://input"); // also returns NULL
Eu verifiquei o que alguns outros módulos fazem e parece que eles usam hook_init para pegar o JSON. Esse é o método preferido? Eu adoraria poder fazê-lo no hook_menu e usar meu próprio caminho e tal ...
Como alternativa, seria melhor escrever meu próprio script PHP e executar fora do Drupal, apenas fazendo uma inicialização para o banco de dados, se necessário?
Respostas:
Acontece que eu estava obtendo os dados, mas esqueci de decodificá-los ...
No meu retorno de chamada hook_menu:
Então eu posso brincar o quanto quiser com o valor recebido $.
Além disso, o inputstream módulo é inestimável em deixar-me chegar ao fluxo de entrada mais de uma vez (se você tentar usar
php://input
mais de uma vez, pela segunda vez, e aqueles seguinte, irá retornar NULL).Como uma observação adicional, observei hoje um novo módulo que pode ser uma maneira ainda mais simples de lidar com isso: Conteúdo como JSON
fonte
O servidor REST que faz parte do módulo Services faz isso automaticamente para JSON e para outros formatos: http://drupal.org/project/services
Ele também suporta o Inputstream (o Inputstream foi criado para lidar com a verificação do OAuth e a decodificação de serviços do mesmo fluxo).
fonte