You are on page 1of 8

Web Services

Ps-Graduao em Tecnologias para o desenvolvimento de aplicaes WEB


Adilson Vahldick

Contedo da Aula de Hoje


Conceitos bsicos Teste com WS Implementao de WS (Provedor e usurio)

Instrutor : Adilson Vahldick

Adilson Vahldick

Avaliao da Disciplina
Implementao de um provedor de WS Implementao de uma aplicao usuria desses WS mais outra fornecida pelo professor Trabalho em duplas Data de entrega: 21/05/2007

O que um web service?


um conjunto de funes que podem ser acessadas via protocolo HTTP
Servidor Web Aplicao incluirCliente fazerPedido listarContasPagar Aplicao Cobol Aplicao Java Aplicao Delphi

Adilson Vahldick

Adilson Vahldick

O que um web service?


Com o protocolo HTTP minimizam as complicaes com firewall
Servidor Web Aplicao incluirCliente fazerPedido listarContasPagar Aplicao http://xpto.br/ <incluirCliente> <nome>Adilson</nome> </incluirCliente>

Vantagens
Interoperabilidade em ambientes heterogneos Servios de negcio atravs da Web Integrao com os sistemas existentes Suportam mais tipos de clientes

<resposta>130</resposta>
Adilson Vahldick

Adilson Vahldick

Exemplos de Web Services


http://www.xmethods.net/ http://api.google.com/GoogleSearch.wsdl
Adilson Vahldick

Exemplos de Web Services


Em xmethods, selecione [Full List] Procure o servio Converso de IP para Pas 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 pgina aberta
Adilson Vahldick

SOAP
Simple Object Access Protocol Protocolo que padroniza como devem ser as mensagens trocadas entre cliente e provedor Mensagens como XML

SOAP
Formato desses documentos (mensagens) request http://xpto.br/ <incluirCliente> <nome>Adilson</nome> </incluirCliente>

Servidor Web Aplicao incluirCliente fazerPedido listarContasPagar

Aplicao

<resposta>130</resposta> response

Adilson Vahldick

Adilson Vahldick

SOAP
Composio da mensagem

SOAP
Formato da mensagem <soap:Envelope> <soap:Header> ........ </soap:Header> <soap:Body> ........ </soap:Body> </soap:Envelope>
Adilson Vahldick

Fonte: www.w3.org
Adilson Vahldick

SOAP
Header:
Opcional Informaes contextuais, no especficas s chamadas que constam na tag Body So usados por pr-processadores de SOAP Transao, autenticao, ...

Header
<soap:Header> <m:transaction xmlns:m="soap-transaction" soap:mustUnderstand="true"> <transactionID>1234</transactionID> </m:transaction> </soap:Header>
Adilson Vahldick

Adilson Vahldick

Header
mustUnderstand: mesmo que o servidor entender o corpo da mensagem, se ele no entender o cabealho ento deve rejeitar a mensagem inteira Body:

SOAP
Obrigatrio Contedo da mensagem Dois estilos:
Document: objeto (pedido, registro de cliente) RPC: chamada rotina (procedures ou mtodos) com seus parmetros

Adilson Vahldick

Adilson Vahldick

Body - DOC
Request
<soap:Envelope> <soap:Body> <tns:Order> <tns:orderNumber>1000</tns:orderNumber> <tns:orderDate>2007/05/05</tns:orderDate> </tns:Order> </soap:Body> </soap:Envelope>

Body - RPC
Request
<soap:Envelope> <soap:Body> <tns:IP2Pais> <ip>200.135.24.30</ip> </tns:IP2Pais> </soap:Body> </soap:Envelope>

Adilson Vahldick

Adilson Vahldick

SOAP

SOAP
HTTP Header Filtro do servidor HTTP SOAPAction = Host = Content-Type = text/xml Content-Length =

Aplicao (SOAP Client)

XML Message

Aplicao (SOAP Server)

Adilson Vahldick

Adilson Vahldick

Explorando o SOAP
Retornem a pgina do WS que estavamos testando Clique em [Populate] e digite novamente algum IP Clique em [Edit/Preview] Observe as partes da mensagem Clique em [Send]

Explorando o SOAP
Na pgina contendo o resultado, selecione XML tanto na rea de Request quanto de Response

Adilson Vahldick

Adilson Vahldick

NetTool
http://nettool.sourceforge.net Ferramenta que podemos usar para testar os web services
1. 2. 3. 4.

NetTool
Inicie o NetTool
Mude a forma de envio de GET para POST URL=http://www.oorsprong.org/websamples.countryinfo/CountryI nfoService.wso Adicione uma linha no cabealho (clicando Add Header) O nome do campo Content-type e o valor text/xml.

Adilson Vahldick

Adilson Vahldick

NetTool
5. Na rea de edio abaixo do boto [Add Header] digite:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://www.oorsprong.org/websamples.countryinfo"> <soap:Body> <tns:ListOfContinentsByName /> </soap:Body> </soap:Envelope>
1

4 3

6. Depois clique em [Send]

Adilson Vahldick

Adilson Vahldick

NetTool Exerccio
Faa funcionar o exemplo do reconhecedor de IPs que exploramos no xmethods Experimente outros servios
Country Information WebService Bible Verses (Genesis 1:1)

SOAP Fault
<soap:Body> <soap:Fault> <faultcode></faultcode> <faultstring> </faultstring> <faultactor> </faultactor> <detail> </detail> </soap:Fault> </soap:Body>
Adilson Vahldick

Adilson Vahldick

SOAP Fault
faultcode: cdigo de erro faultstring: mensagem de erro legvel faultactor: URL de quem gerou o erro detail: por exemplo, a pilha de chamadas que gerou o erro

SOAP Fault
</SOAP-ENV:Envelope> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>Client</faultcode> <faultactor>ERRO</faultactor> <faultstring>**no foram devolvidos registos**</faultstring> <detail></detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Adilson Vahldick

Adilson Vahldick

WSDL
Web Service Description Language Documento XML que descreve o WS Ferramentas automatizam a gerao de cdigo ou integrao entre WS utilizando a WSDL <definitions>

WSDL
<types> ...</types> <message> ... </message> <portType> ... </portType> <binding> ... </binding> <service> ... </service>

</definitions>

Adilson Vahldick

Adilson Vahldick

WSDL
Tipos de dados usados como parmetros ou retorno
<types> <xsd:complexType name="paisdados"> <xsd:all> <xsd:element name="isocode" type="xsd:string"/> <xsd:element name="pais" type="xsd:string"/> <xsd:element name="regiao" type="xsd:string"/> <xsd:element name="capital" type="xsd:string"/> <xsd:element name="moeda" type="xsd:string"/> </xsd:all> </xsd:complexType> </types>
Adilson Vahldick

WSDL
Mensagens que sero trocadas entre cliente e provedor
<message name="IP2PaisRequest"> <part name="ip" type="xsd:string" /> </message> <message name="IP2PaisResponse"> <part name="retorna" type="tns:paisdados" /> </message>

Adilson Vahldick

WSDL
Mapeamento de uma operao (funo) com as mensagens
<portType name="ConversaodeIPparaPaisPortType"> <operation name="IP2Pais"> <input message="tns:IP2PaisRequest"/> <output message="tns:IP2PaisResponse"/> </operation> </portType>

WSDL
Como a operao foi implementada
<binding name="ConversaodeIPparaPaisBinding" type="tns:ConversaodeIPparaPaisPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="IP2Pais"> <soap:operation 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

WSDL
Como a operao foi implementada (cont.)
<binding> <operation name="IP2Pais"> <output> <soap:body use="encoded namespace="http://webservices.tekever.eu/ip2pais" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding>
Adilson Vahldick

WSDL
Onde o WS est hospedado
<service name="ConversaodeIPparaPais"> <port name="ConversaodeIPparaPaisPort" binding="tns:ConversaodeIPparaPaisBinding"> <soap:address location="http://webservices.tekever.eu/ip2pais/index.php"/> </port> </service>

Adilson Vahldick

WSDL
ConversaodeIPparaPaisPortType IP2Pais input IP2PaisRequest output IP2PaisResponse

Funcionamento da chamada de uma operao do WS


ConversaodeIPparaPais

implementa ConversaodeIPparaPais

ConversaodeIPparaPaisPort

ConversaodeIPparaPaisBinding (usa HTTP e RPC)

ConversaodeIPparaPaisPort

ConversaodeIPparaPaisBinding (usa HTTP e RPC) Aplicao

Adilson Vahldick

Adilson Vahldick

WSDL no xmethods
Retornando pgina do xmethods (do IP por pas) Clique em [View] Na caixa de seleo, troque de [Pseucocode] para [Raw] e depois [XML]

Exerccios WSDL
Identifique nos servios de busca de versculos da Bblia e informaes de pases
binding: o nome, o protocolo (p.e. HTTP) e o tipo de troca de mensagem (RPC ou DOC) service: o nome e o nome das ports

Adilson Vahldick

Adilson Vahldick

Referncias
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

You might also like