Escolar Documentos
Profissional Documentos
Cultura Documentos
Criando Um Web Service PHP Com NuSoap e Acessando-O Com NCLua Soap
Criando Um Web Service PHP Com NuSoap e Acessando-O Com NCLua Soap
Antes de iniciarmos nossos trabalhos com o NCL/Lua, podemos testar o funcionamento do nosso
Web Service atravs de um cliente PHP. Para tanto, basta executar o script PHP listado abaixo,
lembrando que localhost se refere mquina local e pode ser substitudo por um ip ou um
domnio, conforme o ambiente onde est hospedado o nosso servio.
Caso haja interesse em acessar o WSDL do nosso Web Service, basta acessar a url do arquivo
principal em adio do parmetro ?wsdl. Por exemplo, se a aplicao estiver rodando na mquina
local, conseguiremos visualizar o WSDL no navegador atravs do endereo
http://localhost/mywebservice/server.php?wsdl.
Agora, criaremos uma Table Lua contendo as informaes necessrias para a criao da
requisio ao Web Service. Tais informaes so: Endereo do arquivo principal do Web Service; o
namespace do servio, anteriormente escolhido (sem o urn:); o nome do mtodo e os parmetros
do mesmo.
Julgo importante ressaltar um fato interessante com relao aos parmetros em nossa Table Lua.
Um Web Service PHP baseado em NuSoap no considera o nome dos parmetros, somente a
ordem em que eles aparecem no xml de requisio. No nosso exemplo, com a Table Lua
considerada, o mdulo NCLua soap ir gerar um xml de requisio contendo o seguinte fragmento,
referente aos parmetros a serem passados para a funo do servio:
Apesar de nosso Web Service ter sido registrado com os parmetros de nomes a, b e c, o
mesmo comportamento ser evidenciado se o fragmento acima for substitudo por:
Isso ocorre porque, conforme dito antes, o NuSoap simplesmente joga o valor da primeira tag de
parmetros no primeiro argumento do mtodo de servio, e assim por diante. O mdulo NCLua
SOAP, por sua vez, ao gerar o xml de requisio, escreve as tags de parmetros em ordem arbitrria.
Poderia acontecer, por exemplo, de o fragmento xml mostrado acima ter sido gerado da seguinte
forma:
Quando o NuSoap fosse executar o trabalho de interpretao da requisio, a nossa funo seria
chamada da seguinte maneira:
triangle(4, 5, 3);
Ou seja, se no nosso caso a ordem em que os lados do tringulo aparecessem na funo
importasse , ocorreria um resultado inesperado (para o nosso Web Service a ordem no importar,
pois dentro do mtodo triangle os lados so postos em ordem crescente de medida). Portando, para
evitar maiores problemas, aconselho sempre a se conhecer a ordem em que aparecem os
argumentos da funo de servio e, ao se gerar a Table Lua de requisio, especific-los
respectivamente da seguinte forma:
Como cada elemento da tabela params no possui identificador explcito, ou seja, os seus
elementos so sub-tabelas sem nome, o mesmo passa a ter o formato de um array. Deste modo, seus
elementos so associados biunivocamente com ndices numricos, garantindo assim que a ordem de
declarao dos parmetros seja respeitada no momento de montagem do xml de requisio por parte
do mdulo NCLua SOAP.
Voltando ao nosso main.lua, aps especificarmos o Table Lua de requisio, implementaremos
a funo que ir receber e tratar a resposta obtida do Web Service. Esta funo obrigatoriamente
deve receber um parmetro referente resposta a ser obtida do Web Service.
Finalmente, chamamos o mtodo call do mdulo NCLua SOAP, passando como argumentos o
Table Lua de requisio, o nome da funo de retorno que acabamos de criar e a verso do SOAP
utilizada pelo Web Service, que no caso do NuSoap ser 1.1.
Concluso
Por aqui, terminamos mais um tutorial sobre aplicaes em Tv Digital, desta vez buscando
mostrar um pouco sobre o funcionamento da comunicao entre um Web Service PHP e uma
aplicao NCL/Lua. Espero que, de modo geral, o que foi exposto aqui tenha sido proveitoso, uma
vez que Web Services se mostram bastante adequados para fornecer informaes s mais variadas
plataformas, podendo constituir uma ferramenta de interatividade poderosssima nas mais diversas
aplicaes de Tv Digital. E esse recurso, quando somado s vantagens oferecidas pela tecnologia
PHP, torna-se um instrumento gratuito e de fcil manuseio, que atende desde as aplicaes mais
simples at as mais engenhosas.
Links
Fontes
http://www.scottnichol.com/nusoapintro.htm
http://www.scottnichol.com/nusoapprogwsdl.htm
http://ncluasoap.manoelcampos.com
Outros Projetos Interessantes em TV Digital (por Manoel Campos)
http://enquetetvd.manoelcampos.com
http://ncluatweet.manoelcampos.com
http://ncluarss.manoelcampos.com