Você está na página 1de 8

Conteúdo da Aula de Hoje

Web Services
• Conceitos básicos
Pós-Graduação em
Tecnologias para o desenvolvimento de • Teste com WS
aplicações WEB
• Implementação de WS (Provedor e usuário)
Adilson Vahldick

Instrutor : Adilson Vahldick Adilson Vahldick

Avaliação da Disciplina O que é um web service?


• Implementação de um provedor de WS • É um conjunto de funções que podem ser
• Implementação de uma aplicação usuária acessadas via protocolo HTTP
desses WS mais outra fornecida pelo Servidor Web
Aplicação
Delphi
professor
Aplicação
incluirCliente
Aplicação
• Trabalho em duplas fazerPedido Java

• Data de entrega: 21/05/2007 listarContasPagar


Aplicação
Cobol

Adilson Vahldick Adilson Vahldick

O que é um web service? Vantagens


• Com o protocolo HTTP minimizam as • Interoperabilidade em ambientes
complicações com firewall heterogêneos
http://xpto.br/ • Serviços de negócio através da Web
<incluirCliente>
Servidor Web
<nome>Adilson</nome> • Integração com os sistemas existentes
</incluirCliente>

Aplicação
• Suportam mais tipos de clientes
incluirCliente Aplicação

fazerPedido

listarContasPagar
<resposta>130</resposta>

Adilson Vahldick Adilson Vahldick

1
Exemplos de Web Services Exemplos de Web Services
• http://www.xmethods.net/ • Em xmethods, selecione [Full List]
• http://api.google.com/GoogleSearch.wsdl • Procure o serviço Conversão de IP para País
• Clique em [Try It]
• Abra o prompt de comando e digite
– ping www.furb.br
• Volte ao navegador e digite IP retornado
• Clique em [Send]
• Experimente com outros sites!!!
• Mantenha essa página aberta
Adilson Vahldick Adilson Vahldick

SOAP SOAP
• Simple Object Access Protocol Formato desses documentos
(mensagens)
• Protocolo que padroniza como devem ser request
as mensagens trocadas entre cliente e http://xpto.br/
<incluirCliente>
provedor Servidor Web
<nome>Adilson</nome>
</incluirCliente>
• Mensagens como XML
Aplicação
incluirCliente Aplicação

fazerPedido

listarContasPagar
<resposta>130</resposta>
response
Adilson Vahldick Adilson Vahldick

SOAP SOAP
• Composição da mensagem
• Formato da mensagem
<soap:Envelope>
<soap:Header>
........
</soap:Header>
<soap:Body>
........
</soap:Body>
</soap:Envelope>

Fonte: www.w3.org
Adilson Vahldick Adilson Vahldick

2
SOAP Header
• Header: <soap:Header>
– Opcional <m:transaction
– Informações contextuais, não específicas às xmlns:m="soap-transaction"
chamadas que constam na tag Body
soap:mustUnderstand="true">
– São usados por pré-processadores de SOAP
– Transação, autenticação, ... <transactionID>1234</transactionID>
</m:transaction>
</soap:Header>

Adilson Vahldick Adilson Vahldick

Header SOAP
• mustUnderstand: mesmo que o servidor • Body:
entender o corpo da mensagem, se ele – Obrigatório
não entender o cabeçalho então deve – Conteúdo da mensagem
rejeitar a mensagem inteira – Dois estilos:
• Document: objeto (pedido, registro de cliente)
• RPC: chamada à rotina (procedures ou métodos)
com seus parâmetros

Adilson Vahldick Adilson Vahldick

Body - DOC Body - RPC


• Request • Request
<soap:Envelope> <soap:Envelope>
<soap:Body> <soap:Body>
<tns:Order> <tns:IP2Pais>
<tns:orderNumber>1000</tns:orderNumber> <ip>200.135.24.30</ip>
<tns:orderDate>2007/05/05</tns:orderDate> </tns:IP2Pais>
</tns:Order> </soap:Body>
</soap:Body> </soap:Envelope>
</soap:Envelope>

Adilson Vahldick Adilson Vahldick

3
SOAP SOAP
• HTTP Header
SOAPAction = “” Filtro do servidor HTTP

Aplicação
XML Message
Aplicação Host =
(SOAP Client) (SOAP Server)
Content-Type = text/xml
Content-Length =

Adilson Vahldick Adilson Vahldick

Explorando o SOAP Explorando o SOAP


• Retornem a página do WS que estavamos • Na página contendo o resultado, selecione
testando XML tanto na área de Request quanto de
• Clique em [Populate] e digite novamente Response
algum IP
• Clique em [Edit/Preview]
• Observe as partes da mensagem
• Clique em [Send]

Adilson Vahldick Adilson Vahldick

NetTool NetTool
• http://nettool.sourceforge.net • Inicie o NetTool

1. Mude a forma de envio de GET para POST


• Ferramenta que podemos usar para testar 2. URL=http://www.oorsprong.org/websamples.countryinfo/CountryI
os web services nfoService.wso
3. Adicione uma linha no cabeçalho (clicando Add Header)
4. O nome do campo é Content-type e o valor é text/xml.

Adilson Vahldick Adilson Vahldick

4
NetTool 2

5. Na área de edição abaixo do botão [Add Header] digite:


<soap:Envelope
1 6
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://www.oorsprong.org/websamples.countryinfo">
<soap:Body>
<tns:ListOfContinentsByName /> 4
3
</soap:Body>
</soap:Envelope>

5
6. Depois clique em [Send]

Adilson Vahldick Adilson Vahldick

NetTool – Exercício SOAP Fault


• Faça funcionar o exemplo do reconhecedor de <soap:Body>
IPs que exploramos no xmethods <soap:Fault>
• Experimente outros serviços <faultcode></faultcode>
– Country Information WebService
<faultstring> </faultstring>
– Bible Verses (Genesis 1:1)
<faultactor> </faultactor>
<detail> </detail>
</soap:Fault>
</soap:Body>

Adilson Vahldick Adilson Vahldick

SOAP Fault SOAP Fault


</SOAP-ENV:Envelope>
• faultcode: código de erro
<SOAP-ENV:Body>
• faultstring: mensagem de erro legível <SOAP-ENV:Fault>
<faultcode>Client</faultcode>
• faultactor: URL de quem gerou o erro <faultactor>ERRO</faultactor>
• detail: por exemplo, a pilha de chamadas <faultstring>**não foram devolvidos registos**</faultstring>
<detail></detail>
que gerou o erro </SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Adilson Vahldick Adilson Vahldick

5
WSDL WSDL
• Web Service Description Language <definitions>
• Documento XML que descreve o WS <types> ...</types>
• Ferramentas automatizam a geração de <message> ... </message>
código ou integração entre WS utilizando <portType> ... </portType>
a WSDL <binding> ... </binding>
<service> ... </service>
</definitions>

Adilson Vahldick Adilson Vahldick

WSDL WSDL
• Tipos de dados usados como parâmetros • Mensagens que serão trocadas entre
ou retorno cliente e provedor
<types>
<xsd:complexType name="paisdados">
<xsd:all>
<message name="IP2PaisRequest">
<xsd:element name="isocode" type="xsd:string"/>
<part name="ip" type="xsd:string" />
<xsd:element name="pais" type="xsd:string"/>
</message>
<xsd:element name="regiao" type="xsd:string"/>
<xsd:element name="capital" type="xsd:string"/>
<message name="IP2PaisResponse">
<xsd:element name="moeda" type="xsd:string"/>
<part name="retorna" type="tns:paisdados" />
</xsd:all>
</message>
</xsd:complexType>
</types>

Adilson Vahldick Adilson Vahldick

WSDL WSDL

• Mapeamento de uma operação (função) • Como a operação foi implementada


com as mensagens <binding name="ConversaodeIPparaPaisBinding"
type="tns:ConversaodeIPparaPaisPortType">
<portType name="ConversaodeIPparaPaisPortType">
<operation name="IP2Pais"> <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<input message="tns:IP2PaisRequest"/>
<output message="tns:IP2PaisResponse"/>
<operation name="IP2Pais">
</operation>
<soap:operation
</portType> soapAction="http://webservices.tekever.eu/ip2pais#IP2Pais"
style="rpc"/>
<input>
<soap:body use="encoded"
namespace="http://webservices.tekever.eu/ip2pais"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
Adilson Vahldick
..... Adilson Vahldick

6
WSDL WSDL

• Como a operação foi implementada (cont.) • Onde o WS está hospedado

<binding> <service name="ConversaodeIPparaPais">


… <port name="ConversaodeIPparaPaisPort"
<operation name="IP2Pais"> binding="tns:ConversaodeIPparaPaisBinding">
… <soap:address
<output> location="http://webservices.tekever.eu/ip2pais/index.php"/>
<soap:body use="encoded“ </port>
namespace="http://webservices.tekever.eu/ip2pais" </service>
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>

Adilson Vahldick Adilson Vahldick

WSDL Funcionamento da chamada de


ConversaodeIPparaPaisPortType uma operação do WS
IP2Pais
ConversaodeIPparaPais
input IP2PaisRequest output IP2PaisResponse

ConversaodeIPparaPaisBinding
implementa ConversaodeIPparaPaisPort
(usa HTTP e RPC)
ConversaodeIPparaPais

ConversaodeIPparaPaisBinding
ConversaodeIPparaPaisPort
(usa HTTP e RPC) Aplicação

Adilson Vahldick Adilson Vahldick

WSDL no xmethods Exercícios WSDL


• Retornando à página do xmethods (do IP • Identifique nos serviços de busca de
por país) versículos da Bíblia e informações de
• Clique em [View] países
• Na caixa de seleção, troque de – binding: o nome, o protocolo (p.e. HTTP) e o
tipo de troca de mensagem (RPC ou DOC)
[Pseucocode] para [Raw] e depois [XML]
– service: o nome e o nome das ports

Adilson Vahldick Adilson Vahldick

7
Referências
• www.w3.org/2002/ws
• Chappel, D.A.; Jewell, T. Java Web Services.
• McGovern, J. Java Web Services Architecture.
• Snell, J. Programming Web Services with SOAP.

Adilson Vahldick