SlideShare une entreprise Scribd logo
1  sur  25
Part1-Soap
What are “Web Services”?
 IBM
 “A Web service is an interface that describes a
collection of operations that are network accessible
through standardized XML messaging”
 Microsoft: XML Web Services
 “.. expose useful functionality to Web users through
a standard Web protocol”
 “.. provide a way to describe their interfaces in
enough detail to allow a user to build a client
application to talk to them”
 “.. are registered so that potential users can find
them easily”
Why Web Services?
 From business standpoint
 Integration
○ Within an organization
○ Between companies
○ Allows time/cost efficiencies
 Purchase orders
 Answering inquiries
 Processing shipment requests
○ Do this without locking in to a single partner
Web Service Architecture
 Service-Oriented Architecture
Service
Registry
Service
Requestor
Service
Provider
Find Publish
Bind
Architecture II
• All the technologies are XML based …
Registry
(UDDI)
Service
Requestor
Service
Provider
Find
Publish
Bind
(SOAP)
(SOAP)
(WSDL)
XML Leveraging Features
 XML Namespaces
 Collision
○ Common XML element names
 Application specific or embedded in message?
 Allows composition of multiple XML
documents
○ Identifies elements belonging to the same
document type
XML Leveraging Features II
 XML Schemas
 Alternative to DTDs for describing document
structure
 Written in XML
○ Simple types
○ Complex types
 Reusable
○ Intended to be used with namespaces
SOAP
 Simple Object Access Protocol
 Web service messaging and invocation
 2nd Generation XML Protocol
 Takes advantage of
○ XML Namespaces
○ XML Schema
First Generation XML
Protocol Based on XML 1.0
 Example: XML-RPC
 Introduced by Userland in 1998
 Uses HTTP as underlying transport
<methodResponse>
<params>
<param>
<value>
<string>twenty-eight</string>
</value>
</param>
</params>
</methodResponse>
Call Response
<methodCall>
<methodName>NumberToText</methodName>
<params>
<param>
<value><i4>28</i4></value>
</param>
</params>
</methodCall>
First Gen. XML Protocol
Issues
 Extensibility
 All protocol architects had to agree for changes
 Avoid with namespaces
 Datatyping
 Single DTDs
○ Limited in use of XML elements
○ Descriptive nature of XML sacrificed
 XML schema is a better solution
SOAP History
1998 • Term SOAP coined at Microsoft
1999 • Microsoft works with BizTalk to release SOAP 0.9
• Submitted to IETF
• SOAP 1.0 released in December
2000 • SOAP 1.1 submitted to W3C with IBM
• IBM releases a Java SOAP implementation
• Sun starts work on Web services in J2EE
2001
• SOAP 1.2 released by XML Protocol working group at
W3C
Currently, about 80+ SOAP implementations available
including Apple…
SOAP Messaging Layers
App API
SOAP, XML Processing
App API
SOAP, XML Processing
SOAP Message SOAP Message
HTTP HTTP
Developer
SOAP Service
Provider
HTTP
Client ProviderView
SOAP Message
<Envelope>
</Envelope>
<Header>
</Header>
<Body>
</Body>
<?xml version="1.0" encoding="UTF-8"?>
SOAP Envelope
 Root element
 Mandatory
 Does not expose any protocol versions
 Protocol version is the URI of SOAP envelope
namespace
 encodingStyle attribute for complex types
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
xmlns="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
SOAP Header
 Optional
 Allows packaging of information
orthogonal to message
 Transactions
○ Authentication information
○ Account information
 SOAP-ENV:mustUnderstand
SOAP-ENV:mustUnderstand
 Attribute for Header element
 Value 0 – skip this element if it doesn’t
make sense
 Value 1 – must fail if it doesn’t make sense
 Ensures recipients be aware of important
protocol extensions
<SOAP-ENV:Header>
<t:client xmlns:t=“Some-URI”
SOAP-ENV:mustUnderstand=“0”>
sacharya@inktomi.com
</t:client>
</SOAP-ENV:Header>
SOAP Body
 Can contain arbitrary XML
 Conventions for
 RPCs
 Faults
○ Faultcode – lookup string
○ Faultstring – human readable string
○ Faultactor – where in the message path
○ Detail – optional
 Data encoding
Data encoding in SOAP
 SOAP provides default encoding schema
 Why reinvent the wheel?
 Simple data types
 Use “xsi:type”
 String, floats etc
 Complex data types
 SOAP arrays
 Structs: compound types
 Data referencing
 Href and id attributes
Data encoding in SOAP
 Binary data
 Base64 encoding
 Can roll your own schema
 encodingStyle
 Interoperability issues
SOAP Protocol Binding:
HTTP
<Envelope>
<Header>
</Header>
<Body>
<LookupPerson …>
</LookupPerson>
</Body>
<?xml version="1.0" encoding="UTF-8"?>
</Envelope>
POST /ServiceLoc HTTP/1.1
Host: www.foo.com
Content-Type: text/xml; charset=“utf-8”
Content-Length: nnnn
SOAPAction: “Directory/Service”
Out-of-
message
context
In-message
context
Sample RPC Call
Other SOAP Protocol
Bindings
 HTTPS
 Similar to HTTP
○ Use POST
○ Return 200 for success
○ 500 for failure + SOAP fault
○ SOAPAction HTTP header for hint
○ MIME media type: text/html
 SMTP
 SOAP messages with Attachments
SOAP RPC Example:
getQuote
import SOAP
server = SOAP.SOAPProxy("http://services.xmethods.com:80/soap",
namespace = 'urn:xmethods-delayed-quotes')
print "IBM>>", server.getQuote(symbol = 'IBM')
RPC Invocation Message
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getQuote
xmlns:ns1="urn:xmethods-delayed-quotes" SOAP-ENC:root="1">
<symbol xsi:type="xsd:string">IBM</symbol>
</ns1:getQuote>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
RPC Reply Message
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/1999/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<soap:Body>
<n:getQuoteResponse xmlns:n='urn:xmethods-delayed-quotes'>
<Result xsi:type='xsd:float'>107.89</Result>
</n:getQuoteResponse>
</soap:Body>
</soap:Envelope>
Roadmap
Registry
(UDDI)
Service
Requestor
Service
Provider
Find
Publish
Bind
(SOAP)
(SOAP)
(WSDL)

Contenu connexe

Tendances

Web Services - A brief overview
Web Services -  A brief overviewWeb Services -  A brief overview
Web Services - A brief overview
Raveendra Bhat
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web services
Neil Ghosh
 
Time for a REST - .NET Framework v3.5 & RESTful Web Services
Time for a REST - .NET Framework v3.5 & RESTful Web ServicesTime for a REST - .NET Framework v3.5 & RESTful Web Services
Time for a REST - .NET Framework v3.5 & RESTful Web Services
ukdpe
 

Tendances (20)

Wsdl
WsdlWsdl
Wsdl
 
WSDL
WSDLWSDL
WSDL
 
WCF And ASMX Web Services
WCF And ASMX Web ServicesWCF And ASMX Web Services
WCF And ASMX Web Services
 
Web services wsdl
Web services wsdlWeb services wsdl
Web services wsdl
 
Soap web service
Soap web serviceSoap web service
Soap web service
 
Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)
 
Web Services - A brief overview
Web Services -  A brief overviewWeb Services -  A brief overview
Web Services - A brief overview
 
Facebook thrift
Facebook thriftFacebook thrift
Facebook thrift
 
Wsdl
WsdlWsdl
Wsdl
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web services
 
Time for a REST - .NET Framework v3.5 & RESTful Web Services
Time for a REST - .NET Framework v3.5 & RESTful Web ServicesTime for a REST - .NET Framework v3.5 & RESTful Web Services
Time for a REST - .NET Framework v3.5 & RESTful Web Services
 
Web Services
Web ServicesWeb Services
Web Services
 
Enjoying the Move from WCF to the Web API
Enjoying the Move from WCF to the Web APIEnjoying the Move from WCF to the Web API
Enjoying the Move from WCF to the Web API
 
Description of soa and SOAP,WSDL & UDDI
Description of soa and SOAP,WSDL & UDDIDescription of soa and SOAP,WSDL & UDDI
Description of soa and SOAP,WSDL & UDDI
 
A2 from soap to rest
A2 from soap to restA2 from soap to rest
A2 from soap to rest
 
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotDelphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
 
Web services concepts, protocols and development
Web services concepts, protocols and developmentWeb services concepts, protocols and development
Web services concepts, protocols and development
 
Java web services
Java web servicesJava web services
Java web services
 
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
 
WSDL 2.0 and Apache Woden
WSDL 2.0 and Apache WodenWSDL 2.0 and Apache Woden
WSDL 2.0 and Apache Woden
 

En vedette

En vedette (14)

Himne di Arezzo
Himne di ArezzoHimne di Arezzo
Himne di Arezzo
 
Digital Health & Wellness Summit @ Mobile World Congress 2016
Digital Health & Wellness Summit @ Mobile World Congress 2016Digital Health & Wellness Summit @ Mobile World Congress 2016
Digital Health & Wellness Summit @ Mobile World Congress 2016
 
Honors thesis - Final Draft
Honors thesis - Final DraftHonors thesis - Final Draft
Honors thesis - Final Draft
 
Internet and business
Internet and businessInternet and business
Internet and business
 
Emp booking form [1987636]
Emp booking form [1987636]Emp booking form [1987636]
Emp booking form [1987636]
 
Pronouns and verb to be
Pronouns   and  verb to bePronouns   and  verb to be
Pronouns and verb to be
 
Бизнес-коллоквиум с пользой для команды и компании — Роман Квартальнов
Бизнес-коллоквиум с пользой для команды и компании — Роман КвартальновБизнес-коллоквиум с пользой для команды и компании — Роман Квартальнов
Бизнес-коллоквиум с пользой для команды и компании — Роман Квартальнов
 
СEE SECR 2016 — Экспресс-аудит дизайна
СEE SECR 2016 — Экспресс-аудит дизайнаСEE SECR 2016 — Экспресс-аудит дизайна
СEE SECR 2016 — Экспресс-аудит дизайна
 
Maven
Maven Maven
Maven
 
Сервис емейл рассылок на Drupal 7
Сервис емейл рассылок на Drupal 7Сервис емейл рассылок на Drupal 7
Сервис емейл рассылок на Drupal 7
 
26.posterior palatal seal
26.posterior palatal seal26.posterior palatal seal
26.posterior palatal seal
 
Creative Advertising | Hunters school
Creative Advertising | Hunters schoolCreative Advertising | Hunters school
Creative Advertising | Hunters school
 
Коробка инструментов как и из чего делать лонгриды и презентации
Коробка инструментов  как и из чего делать лонгриды и презентацииКоробка инструментов  как и из чего делать лонгриды и презентации
Коробка инструментов как и из чего делать лонгриды и презентации
 
GWAVACon 2015: GWAVA + MVP: GoBD und Compliance - was geht mich das an
GWAVACon 2015: GWAVA + MVP: GoBD und Compliance - was geht mich das an GWAVACon 2015: GWAVA + MVP: GoBD und Compliance - was geht mich das an
GWAVACon 2015: GWAVA + MVP: GoBD und Compliance - was geht mich das an
 

Similaire à Web services with soap

Web services protocols
Web services protocolsWeb services protocols
Web services protocols
Jin Castor
 
complete web service1.ppt
complete web service1.pptcomplete web service1.ppt
complete web service1.ppt
Dr.Saranya K.G
 

Similaire à Web services with soap (20)

Web services soap
Web services soapWeb services soap
Web services soap
 
SOAP Service in Mule Esb
SOAP Service in Mule EsbSOAP Service in Mule Esb
SOAP Service in Mule Esb
 
dotNETfinal.ppt
dotNETfinal.pptdotNETfinal.ppt
dotNETfinal.ppt
 
dotNETfinal.ppt
dotNETfinal.pptdotNETfinal.ppt
dotNETfinal.ppt
 
Web services protocols
Web services protocolsWeb services protocols
Web services protocols
 
Sia webservices
Sia webservicesSia webservices
Sia webservices
 
SOAP WEB TECHNOLOGIES
SOAP WEB TECHNOLOGIESSOAP WEB TECHNOLOGIES
SOAP WEB TECHNOLOGIES
 
SynapseIndia dotnet web applications development
SynapseIndia  dotnet web applications developmentSynapseIndia  dotnet web applications development
SynapseIndia dotnet web applications development
 
Web services
Web servicesWeb services
Web services
 
Web Topics
Web TopicsWeb Topics
Web Topics
 
nptl cc video.pptx
nptl cc video.pptxnptl cc video.pptx
nptl cc video.pptx
 
Complete Architecture and Development Guide To Windows Communication Foundati...
Complete Architecture and Development Guide To Windows Communication Foundati...Complete Architecture and Development Guide To Windows Communication Foundati...
Complete Architecture and Development Guide To Windows Communication Foundati...
 
Ogsi protocol perspective
Ogsi protocol perspectiveOgsi protocol perspective
Ogsi protocol perspective
 
complete web service1.ppt
complete web service1.pptcomplete web service1.ppt
complete web service1.ppt
 
Week2 cloud computing week2
Week2 cloud computing week2Week2 cloud computing week2
Week2 cloud computing week2
 
Context And Concept Of Web Services
Context And Concept Of Web ServicesContext And Concept Of Web Services
Context And Concept Of Web Services
 
Xml.ppt
Xml.pptXml.ppt
Xml.ppt
 
Web services concepts, protocols and development
Web services concepts, protocols and developmentWeb services concepts, protocols and development
Web services concepts, protocols and development
 
Understanding Web Services by software outsourcing company india
Understanding Web Services by software outsourcing company indiaUnderstanding Web Services by software outsourcing company india
Understanding Web Services by software outsourcing company india
 
soap toolkit
soap toolkitsoap toolkit
soap toolkit
 

Plus de Khan625

Plus de Khan625 (20)

Mapping and listing in mule
Mapping and listing in muleMapping and listing in mule
Mapping and listing in mule
 
Message properties component in Mule
Message properties component in MuleMessage properties component in Mule
Message properties component in Mule
 
Jenkins Build System
Jenkins Build SystemJenkins Build System
Jenkins Build System
 
Building and Managing Projects with Maven
Building and Managing Projects with MavenBuilding and Managing Projects with Maven
Building and Managing Projects with Maven
 
Web services wsdl
Web services wsdlWeb services wsdl
Web services wsdl
 
Web services uddi
Web services uddiWeb services uddi
Web services uddi
 
WebServices Basic Overview
WebServices Basic OverviewWebServices Basic Overview
WebServices Basic Overview
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Mmc rest api user groups
Mmc rest api user groupsMmc rest api user groups
Mmc rest api user groups
 
Mapping and listing with mule
Mapping and listing with muleMapping and listing with mule
Mapping and listing with mule
 
Message properties component in mule
Message properties component in muleMessage properties component in mule
Message properties component in mule
 
Expression filter in Mule
Expression filter in MuleExpression filter in Mule
Expression filter in Mule
 
Data weave
Data weave Data weave
Data weave
 
Anypoint data gateway
Anypoint data gatewayAnypoint data gateway
Anypoint data gateway
 
Mule with drools
Mule with droolsMule with drools
Mule with drools
 
Mule esb
Mule esbMule esb
Mule esb
 
Idempotent filter with simple file
Idempotent filter with simple fileIdempotent filter with simple file
Idempotent filter with simple file
 
Mule with quartz
Mule with quartzMule with quartz
Mule with quartz
 
Mule with rabbit mq
Mule with rabbit mqMule with rabbit mq
Mule with rabbit mq
 
Mule with velocity
Mule with velocityMule with velocity
Mule with velocity
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 

Web services with soap

  • 2. What are “Web Services”?  IBM  “A Web service is an interface that describes a collection of operations that are network accessible through standardized XML messaging”  Microsoft: XML Web Services  “.. expose useful functionality to Web users through a standard Web protocol”  “.. provide a way to describe their interfaces in enough detail to allow a user to build a client application to talk to them”  “.. are registered so that potential users can find them easily”
  • 3. Why Web Services?  From business standpoint  Integration ○ Within an organization ○ Between companies ○ Allows time/cost efficiencies  Purchase orders  Answering inquiries  Processing shipment requests ○ Do this without locking in to a single partner
  • 4. Web Service Architecture  Service-Oriented Architecture Service Registry Service Requestor Service Provider Find Publish Bind
  • 5. Architecture II • All the technologies are XML based … Registry (UDDI) Service Requestor Service Provider Find Publish Bind (SOAP) (SOAP) (WSDL)
  • 6. XML Leveraging Features  XML Namespaces  Collision ○ Common XML element names  Application specific or embedded in message?  Allows composition of multiple XML documents ○ Identifies elements belonging to the same document type
  • 7. XML Leveraging Features II  XML Schemas  Alternative to DTDs for describing document structure  Written in XML ○ Simple types ○ Complex types  Reusable ○ Intended to be used with namespaces
  • 8. SOAP  Simple Object Access Protocol  Web service messaging and invocation  2nd Generation XML Protocol  Takes advantage of ○ XML Namespaces ○ XML Schema
  • 9. First Generation XML Protocol Based on XML 1.0  Example: XML-RPC  Introduced by Userland in 1998  Uses HTTP as underlying transport <methodResponse> <params> <param> <value> <string>twenty-eight</string> </value> </param> </params> </methodResponse> Call Response <methodCall> <methodName>NumberToText</methodName> <params> <param> <value><i4>28</i4></value> </param> </params> </methodCall>
  • 10. First Gen. XML Protocol Issues  Extensibility  All protocol architects had to agree for changes  Avoid with namespaces  Datatyping  Single DTDs ○ Limited in use of XML elements ○ Descriptive nature of XML sacrificed  XML schema is a better solution
  • 11. SOAP History 1998 • Term SOAP coined at Microsoft 1999 • Microsoft works with BizTalk to release SOAP 0.9 • Submitted to IETF • SOAP 1.0 released in December 2000 • SOAP 1.1 submitted to W3C with IBM • IBM releases a Java SOAP implementation • Sun starts work on Web services in J2EE 2001 • SOAP 1.2 released by XML Protocol working group at W3C Currently, about 80+ SOAP implementations available including Apple…
  • 12. SOAP Messaging Layers App API SOAP, XML Processing App API SOAP, XML Processing SOAP Message SOAP Message HTTP HTTP Developer SOAP Service Provider HTTP Client ProviderView
  • 14. SOAP Envelope  Root element  Mandatory  Does not expose any protocol versions  Protocol version is the URI of SOAP envelope namespace  encodingStyle attribute for complex types <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=http://schemas.xmlsoap.org/soap/encoding/ xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  • 15. SOAP Header  Optional  Allows packaging of information orthogonal to message  Transactions ○ Authentication information ○ Account information  SOAP-ENV:mustUnderstand
  • 16. SOAP-ENV:mustUnderstand  Attribute for Header element  Value 0 – skip this element if it doesn’t make sense  Value 1 – must fail if it doesn’t make sense  Ensures recipients be aware of important protocol extensions <SOAP-ENV:Header> <t:client xmlns:t=“Some-URI” SOAP-ENV:mustUnderstand=“0”> sacharya@inktomi.com </t:client> </SOAP-ENV:Header>
  • 17. SOAP Body  Can contain arbitrary XML  Conventions for  RPCs  Faults ○ Faultcode – lookup string ○ Faultstring – human readable string ○ Faultactor – where in the message path ○ Detail – optional  Data encoding
  • 18. Data encoding in SOAP  SOAP provides default encoding schema  Why reinvent the wheel?  Simple data types  Use “xsi:type”  String, floats etc  Complex data types  SOAP arrays  Structs: compound types  Data referencing  Href and id attributes
  • 19. Data encoding in SOAP  Binary data  Base64 encoding  Can roll your own schema  encodingStyle  Interoperability issues
  • 20. SOAP Protocol Binding: HTTP <Envelope> <Header> </Header> <Body> <LookupPerson …> </LookupPerson> </Body> <?xml version="1.0" encoding="UTF-8"?> </Envelope> POST /ServiceLoc HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset=“utf-8” Content-Length: nnnn SOAPAction: “Directory/Service” Out-of- message context In-message context Sample RPC Call
  • 21. Other SOAP Protocol Bindings  HTTPS  Similar to HTTP ○ Use POST ○ Return 200 for success ○ 500 for failure + SOAP fault ○ SOAPAction HTTP header for hint ○ MIME media type: text/html  SMTP  SOAP messages with Attachments
  • 22. SOAP RPC Example: getQuote import SOAP server = SOAP.SOAPProxy("http://services.xmethods.com:80/soap", namespace = 'urn:xmethods-delayed-quotes') print "IBM>>", server.getQuote(symbol = 'IBM')
  • 23. RPC Invocation Message <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes" SOAP-ENC:root="1"> <symbol xsi:type="xsd:string">IBM</symbol> </ns1:getQuote> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
  • 24. RPC Reply Message <?xml version='1.0' encoding='UTF-8'?> <soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance' xmlns:xsd='http://www.w3.org/1999/XMLSchema' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' soap:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'> <soap:Body> <n:getQuoteResponse xmlns:n='urn:xmethods-delayed-quotes'> <Result xsi:type='xsd:float'>107.89</Result> </n:getQuoteResponse> </soap:Body> </soap:Envelope>