Desenvolvimento - PHP
Requisições SOAP_WSDL no PHP (webservices)
Neste artigo construiremos uma requisição SOAP_WSDL para consultarmos informações de livros dado o seu ISBN via webservice.
por Marcelo Santos AraujoLogo abaixo, construiremos uma requisição SOAP_WSDL para consultarmos informações de livros dado o seu ISBN. Este webservice está disponível em http://www.webservicex.net/WS/default.aspx.
Um WSDL (webservice definition language) segue o seguinte padrão (apenas uma amostra de uma definição WSDL):
<wsdl:definitions targetNamespace="http://www.webserviceX.NET"> <wsdl:types> <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET"> <s:element name="GetISBNInformation"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="Code" type="s:string"/> </s:sequence> </s:complexType> </s:element>
Abaixo, um formulário construído para capturar um isbn dado pelo usuário:
<?php // construção do formulário para consulta de ISBN // formulário construído com a HTML_QuickForm // construtor HTML_QuickForm("nome_formulario","metodo","acao"); require_once("HTML/QuickForm.php"); echo "<center>"; $form = new HTML_QuickForm("form_isbn","POST","ver_isbn.php"); $form->setRequiredNote("<font face=verdana size=2>* campo obrigatório</font>"); $form->setJsWarnings("Erro(s):","Preencha corretamente os campos acima"); $form->addElement("header", null, "<center><font face=verdana size=2> Consulta de livro</font></center>"); $form->addElement("text", "isbn", "<font face=verdana size=2> ISBN:</font>", array("size" => 21, "maxlength" => 30)); $form->addElement("submit","botao_enviar","Ok"); $form->display(); ?>
Neste exemplo, o webservice ISBN já disponibiliza um arquivo WSDL. Existem casos que é necessário a requisição SOAP sem a definição WSDL, o que pode ser um pouco mais trabalhoso. Vamos lá!
<?php $isbn = $_POST["isbn"]; // utilização da classe SOAP_WSDL("url no formato WSDL"); // método GetISBNInformation(isbn); require_once("SOAP/Client.php"); $wsdl =new SOAP_WSDL("http://www.webservicex.net/isbn.asmx?WSDL"); $client = $wsdl->getProxy(); $ret = $client->GetISBNInformation($isbn); echo $ret; ?>
Como dito anteriormente, existem vários webservices disponíveis no formato WSDL. Procure nos seguintes links:
- http://www.webservicex.net/
- http://www.xmethods.com/
Especificação do WSDL:
- http://www.w3.org/TR/wsdl
Espero ter colaborado!