Você está na página 1de 2

Shlomit Wolf - www.sxc.

hu

Interoperabilidade com Web Services

PROGRAMAO

Servio de primeira
Veja como o PHP-GTK facilita a criao de clientes grcos para qualquer Web Service. por Pablo DallOglio

artigo da srie, veremos as formas de trocar informaes entre aplicaes distantes geogracamente, por meio de Web Services. Para tal, vamos criar uma aplicao cliente em PHP-GTK que se comunique com um servidor rodando Apache e PHP. <?php A nossa aplicao clien// cria a janela te PHP-GTK ir oferecer $janela = new GtkWindow; ao usurio uma interface $janela->set_size_request(200,120); // cria os campos solicitando a execuo de $codigo = new GtkEntry; um mtodo da aplicao = new GtkEntry; $nome servidora, que tambm $nome->set_sensitive(FALSE); ser escrita em PHP. An// cria o boto $botao = new GtkButton('Buscar'); tes de escrever o progra$botao->connect('clicked', 'onBuscar'); ma, vamos explicar alguns // coloca campos na caixa vertical conceitos.
$vbox = new GtkVBox; $vbox->add(new GtkLabel('Cdigo')); $vbox->add($codigo); $vbox->add($botao); $vbox->add(new GtkLabel('Nome')); $vbox->add($nome); // exibe a janela $janela->add($vbox); $janela->show_all(); // aciona o web service function onBuscar() { global $codigo, $nome; // declara parametros do WS $param=array(); $param['encoding'] = 'ISO-8859-1'; $param['location'] = 'http://127.0.0.1/server.php'; $param['exceptions'] = TRUE; $param['uri'] = 'http://test-uri/'; // instancia cliente SOAP $client=new SoapClient(NULL, $param); // executa o mtodo remoto $id = $codigo->get_text(); $resp=$client->buscar($id); $nome->set_text($resp['nome']); } Gtk::Main(); ?>

o artigo anterior[1] estudamos como armazenar as informaes de nossa aplicao PHP-GTK em um banco de dados SQLite. No quinto e ltimo

Web Services representam uma tecnologia que permite a aplicaes comunicarem-se umas com as outras, combinando funcionalidades de forma independente de plataforma ou linguagem. Os Web Services so disponibilizados pela Internet por meio de um conjunto de tecnologias como XML e SOAP (Simple Object Access Protocol), que permitem interoperabilidade pela publicao de servios. Web Services podem ser utilizados para diversos ns, como criar novas aplicaes baseadas em

Web Services

componentes de sistemas legados, um servio online de consulta a cotaes da bolsa, uma aplicao cliente para um servio de consulta a entrega dos correios, uma aplicao cliente para um sistema remoto de registro de horas no ponto ou at um sistema de chat, com um programa cliente que conversa com uma aplicao servidora responsvel por registrar as mensagens de todos os participantes. Enm, as possibilidades so inmeras. Na gura 1 temos uma representao simplicada da aplicao que iremos construir neste artigo. Ambas aplicaes cliente e servidora devem rodar em um dispositivo que permita uma conexo Internet, por meio do protocolo TCP/IP. A aplicao cliente faz uma requisio servidora por meio de um pacote XML, de acordo com o protocolo SOAP, e em seguida a aplicao servidora processa essa requisio, de acordo com suas regras internas, devolvendo a resposta para a aplicao cliente, tambm no formato de um pacote XML.

O PHP5 possui classes nativas que do suporte ao protocolo SOAP. Vamos utilizar tais classes para criar nossa aplicao, que ser extremamente simples. Ela ser formada por uma aplicao cliente, na qual o usurio informar o cdigo de uma pessoa e, ao clicar no boto Buscar, um Web Service ser acionado. Basicamente, esse Web

Aplicao Cliente

76

http://www.linuxmagazine.com.br

Web Services com PHP | PROGRAMAO

no-editvel, pois ele ir apresentar <?php somente o resulfunction buscar($codigo) tado da pesquisa { ao servidor. // cria a string sql Quando o boto $sql = "select nome from pessoas ". "where id='$codigo'"; Buscar for clicado, // conecta ao banco o mtodo onBus$con = pg_connect('host=localhost car() ser execudbname=linuxmag tado. Sua funo user=postgres'); acionar o Web // realiza a consulta $res = pg_query($con, $sql); Service por meio // retorna o resultado da classe do PHP return pg_fetch_array($res); SoapClient . Essa } classe disponibili// declara parametros do WS $param=array(); za para a aplicao $param['encoding'] ='ISO-8859-1'; um objeto cujos ='http://test-uri/'; $param['uri'] mtodos so exa// instancia servidor SOAP tamente os mes$server=new SoapServer(NULL, $param); mos disponibiliza// adiciona a funo ao WS $server->addFunction('buscar'); dos pelo servidor // comea a "ouvir" requisies do Web Service. $server->handle(); Aqui estamos exe?> cutando o mtodo buscar(), passando Service ir comunicar-se com a como parmetro o ID da pessoa. aplicao servidora, em que existe Veja que no parmetro location, um banco de dados de pessoas. A passado ao criar o SoapClient, espeaplicao servidora ir buscar em cicamos a localizao do servidor seu banco de dados interno qual do Web Service. No exemplo 1 registro possui aquele cdigo, e ir um endereo local, mas poderia retorn-lo para a aplicao cliente. ser qualquer endereo IP. Ento, a aplicao cliente exibir o nome da pessoa retornada logo abaixo do boto Buscar. Veja a aplicao cliente na gu- A aplicao servidora (exemplo 2) ir ra 2. Nela, criamos uma janela e, responder aplicao cliente. Para dentro dessa janela, colocamos uma disponibilizar mtodos para a aplicacaixa vertical (exemplo 1). Dentro o cliente, utilizamos a classe Soapda caixa vertical colocamos nossos Server. Essa classe possui o mtodo objetos GtkLabel (Cdigo, Nome), dois addFunction(), que adiciona funes GtkEntry ($codigo, $nome) e um bo- ao Web Service. Essas funes so to para buscar o registro. Tornamos disponibilizadas como mtodos do o campo para digitao do nome objeto SoapClient.

Figura 2 Representao de Web


Services.

No lado da aplicao servidora, existir um banco de dados em PostgreSQL contendo uma tabela de pessoas, em que temos campos como id e nome. O papel do mtodo buscar() receber o cdigo de uma pessoa e retornar o registro da pessoa, composto por seu nome, aplicao cliente.

Aplicao Servidora

Neste ltimo artigo da srie vimos como trocar informaes entre aplicaes por meio de Web Services. Com isso, completamos nossos objetivos, que eram informar o leitor sobre aspectos diferentes relacionados ao PHP-GTK, para que ele pudesse buscar maiores informaes acerca de um assunto especco, quando necessrio. Espero que a leitura tenha sido agradvel e convido a todos a participarem de nossa comunidade virtual PHP-GTK Brasil[2].

Concluso

Mais informaes
[1] Pablo DallOglio, Fale com o banco: http://www. linuxmagazine.com.br/ article/fale_com_o_banco [2] PHP-GTK Brasil: http:// www.php-gtk.com.br [3] Livro PHP-GTK: http:// www.php-gtk.com.br/book [4] Site do Autor: http://www.pablo.blog.br

Figura 1 Programa em execuo.

Linux Magazine #41 | Abril de 2008

77

Você também pode gostar