6
SOAP Transport Web servisų komunikacijos Web servisas WSDL interfeisas SOAP pranešimai Duomenų siuntimo protokolas (HTTP, SMTP,...) TCP/IP Web servisas WSDL interfeisas Transportas HTTP HTTP Dokumentų apsikeitimo protokolas [METODAS] [UŽKL-URI] HTTP/[VER] [Laukas1]: [reikšmė1] [Laukas2]: [reikšmė2] [užklausos duomenys, jei yra] HTTP/[VER] [CODAS] [TEKSTAS] [LaukasA]: [ReikšmėA] [LaukasB]: [ReikšmėB] ...Dokumento turinys... Tuščia eilutė HTTP užklausa (klientasserveris) HTTP atsakymas (serverisklientas) HTTP Metodai Nusako kliento siunčiamo pranešimo pobūdį Atitinka resursų gavimo ir „keitimo“ operacijas Metodai: GET: gauti URL nurodomą resursą HEAD: gauti informaciją apie URL nurodomą resursą POST: siųsti duomenis (URL nurodo duomenų „apdorotoją“) PUT: siųsti duomenis (URL nurodo resursą, kurio duomenys siunčiami) DELETE: pašalinti resursą (identifikuojamą URL) Kiti: OPTIONS, TRACE, CONNECT MIME SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions (MIME) Internet standartas platesniam e-mail panaudojimui Žinutės su ne-ASCII koduotės turiniu Pridedamus ne „teksto“ dokumentus Žinutes iš daugelio dalių Antraštės su ne ASCII koduotės tekstu IETF standartas (1991-1996)

MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

SOAP Transport

Web servisų komunikacijos

Web servisas

WSDL interfeisas

SOAP pranešimai

Duomenų siuntimo protokolas (HTTP, SMTP,...)

TCP/IP

Web servisas

WSDL interfeisas

Tran

spor

tas

HTTP

HTTP

Dokumentų apsikeitimo protokolas

[METODAS] [UŽKL-URI] HTTP/[VER][Laukas1]: [reikšmė1][Laukas2]: [reikšmė2]

[užklausos duomenys, jei yra]

HTTP/[VER] [CODAS] [TEKSTAS][LaukasA]: [ReikšmėA][LaukasB]: [ReikšmėB]

...Dokumento turinys...Tuščiaeilutė

HTTP užklausa (klientas→serveris) HTTP atsakymas (serveris→klientas)

HTTP Metodai● Nusako kliento siunčiamo pranešimo pobūdį

● Atitinka resursų gavimo ir „keitimo“ operacijas● Metodai:

– GET: gauti URL nurodomą resursą– HEAD: gauti informaciją apie URL nurodomą resursą– POST: siųsti duomenis (URL nurodo duomenų

„apdorotoją“)– PUT: siųsti duomenis (URL nurodo resursą, kurio

duomenys siunčiami)– DELETE: pašalinti resursą (identifikuojamą URL)– Kiti: OPTIONS, TRACE, CONNECT

MIME● SMTP (1980): ASCII teksto žinutės● Multipurpose Internet Mail Extensions (MIME)

● Internet standartas platesniam e-mail panaudojimui● Žinutės su ne-ASCII koduotės turiniu● Pridedamus ne „teksto“ dokumentus● Žinutes iš daugelio dalių● Antraštės su ne ASCII koduotės tekstu

● IETF standartas (1991-1996)

Page 2: MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

MIME tipai● Nurodo žinutės dalies (pridedamo dokumento)

tipą● Leidžia parinkti atitinkama apdorojančią programą

image/jpeg - .jpg, .jpeg, .jpetext/html - .html, .htmtext/plain - .txt, .c, .htext/css - .cssvideo/x-msvideo .aviapplication/x-javascript .jsapplication/vnd.ms-powerpoint .ppt, .pps, .potapplication/pdf .pdf

application/octet-stream .exe, .bin, .class, *

Nežinomo tipo baitų srautas

HTTP užklausa ir atsakymas

HTTP/1.1 200 OKDate: Tue, 16 Mar 2010 08:35:54 GMTServer: Microsoft-IIS/6.0Content-Length: 18955Content-Type: text/htmlExpires: Tue, 16 Mar 2010 08:34:54 GMT

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...><html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml"><head><title>W3C Tutorial</title>....

GET http://www.w3schools.com/w3c/home.html HTTP/1.1Host: www.w3schools.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.8)...Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: lt,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Cookie: __utma=119627022.2995073920389789700.1251401017....

Užklausa (naršyklė)

Atsakymas (serveris)

URL

scheme://username:password@domain:port/path/to/resource?query_string#anchor

„Protokolas“:http, ftp, mailto,file,...

Vartotojo vardasIr slaptažodis(jei resursasapsaugotas)

Domenas (adresas):www.gaspadine.lt,...

Porto numeris(prisijungimoprie serverio)

Resurso keliasserveryje

Užklausos parametrai(jei tokia vykdoma)

Pozicijagautameatsakyme

http://www.gaspadine.lt/patiekalas/tarkuotu_bulviu_cepelinai.html

Serverio atsakymų kodai

● 2xx (200): užklausa apdorota sėkmingai● 3xx (302): peradresavimas, (ne)pasikeitęs

resursas,...● 4xx (404): kliento užklausos klaida (klaidingas URL,

neleidžiamas pasiekimas, resursas nerastas,...)● 5xx (500): serverio klaida (klaida apdorojant

užklausa, neveikiantis servisas,...)

HTTP/1.1 200 OKDate: Tue, 16 Mar 2010 08:35:54 GMT...

HTTP/1.1 200 OKDate: Tue, 16 Mar 2010 08:35:54 GMT...

HTTP/1.1 404 Not FoundDate: Tue, 16 Mar 2010 10:00:30 GMT...

HTTP/1.1 404 Not FoundDate: Tue, 16 Mar 2010 10:00:30 GMT...

Page 3: MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

Email (SMTP)Received: from aira2.vu.lt (AirA2.vu.lt [193.219.80.6])

by voruta.vu.lt (VU/2006/08/16) with ESMTP id o2GABG8c013724for <[email protected]>; Tue, 16 Mar 2010 12:11:16 +0200 (EET)

Received: by fxm7 with SMTP id 7so1133114fxm.23 for <[email protected]>; Tue, 16 Mar 2010 03:11:14 -0700 (PDT)Received: by 10.223.63.203 with SMTP id c11mr2235964fai.94.1268734274631; Tue, 16 Mar 2010 03:11:14 -0700 (PDT)Received: from [79.133.242.216] (cable-242-216.cgates.lt [79.133.242.216]) by mx.google.com with ESMTPS id 15sm3754437fxm.0.2010.03.16.03.11.11 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 16 Mar 2010 03:11:12 -0700 (PDT)Message-ID: <[email protected]>Date: Tue, 16 Mar 2010 12:11:04 +0200From: John Doe <[email protected]>User-Agent: Mozilla/5.0 ... Gecko/20100227 Thunderbird/3.0.3MIME-Version: 1.0To: [email protected]: =?UTF-8?B?SsWrc8WzIMW+aW5pYWk=?=Content-Type: text/plain; charset=UTF-8; format=flowedContent-Transfer-Encoding: 7bit

Gerb.,

Informuojame, jog paskaitos sestadieni bus.Administracija

Antraštė

Prane-šimas

Tuščiaeiutė

MIME žinutėReceived: from localhost (webmail.vu.lt [193.219.80.4] by voruta.vu.lt ......From: [email protected]: [email protected]: Requested documentsMIME-Version: 1.0Content-Type: multipart/mixed; boundary="=_55b7ziaifd44"Content-Transfer-Encoding: 7bit

This message is in MIME format.

--=_55b7ziaifd44Content-Type: text/plain; charset=utf-8; DelSp="Yes";

format="flowed"Content-Disposition: inlineContent-Transfer-Encoding: quoted-printable

Hello,Here is your documentV.P.--=_55b7ziaifd44Content-Type: application/x-zip-compressed; name="Document1.zip"Content-Disposition: attachment; filename="Document1.zip"Content-Transfer-Encoding: base64

UEsDBBQAAAAIAHxyZTz9VQhBowgAAEEdAAAJAAAAaW5kZXgucGhw7RlbT9tI9zn+FdMoqh2axtQsS5sbCpdStLDQJhXql0XRYE8SL47HjMeEqOK/75mLbyGwgPrwPWwq6vGZc7/5jN3ZjWaRYW8YaKPi....

--=_55b7ziaifd44--

MIME„multipart“pranešimas

Pranešimodalys susavoantraštėmis

SOAP over HTTP

SOAP HTTP POST naudojimas

Siųsti HTTP POSTsu SOAP pranešimu

Gautiužklausą

Dekoduotiužklausospranešimą Iškviesti operaciją

Atlikti veiksmusGrąžinti rezultatąUžkoduoti

atsakymopranešimą

Siųstiatsakymą

Gauti HTTP atsakymąsu SOAP pranešimu

KlientasServeris

Serviso„klausytojas“

Serviso„proxy“

Taikomojiprograma

HTTP: (POST) užklausa

POST /WebService/PasswordGeneratorService.asmx HTTP/1.1Content-Type: application/soap+xml; charset="utf-8"SOAPAction: "http://www.mellbourn.com/WebServices/set_Length"User-Agent: Axis2Host: www.mellbourn.comContent-Length: 274

<?xml version='1.0' encoding='UTF-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> <set_Length xmlns="http://www.mellbourn.com/WebServices/"> <value>20</value> </set_Length> </env:Body></env:Envelope>

Serviso „programos“nuoroda serveryje(endpoint)

HTTP protokoloversija

HTTP užklausosturinio koduotė

Užklausos „paskirtis“

Užklausos turiniodydis baitais

Tuščiaeilutė

SOAP pranešimas

HTTP: atsakymas

HTTP/1.1 200 OKDate: Wed, 03 Mar 2010 21:47:56 GMTServer: Microsoft-IIS/6.0MicrosoftOfficeWebServer: 5.0_PubX-Powered-By: ASP.NETX-AspNet-Version: 1.1.4322Set-Cookie: ASP.NET_SessionId=lv4hvv2rgjj3wwvxshllwe55; path=/Cache-Control: private, max-age=0Content-Type: application/soap+xml; charset=utf-8Content-Length: 235

<?xml version="1.0" encoding="utf-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> <set_LengthResponse xmlns="http://www.mellbourn.com/WebServices/" /> </env:Body></env:Envelope>

Atsakymo kodas 2xx (OK)arba ne 2xx (klaida)

Kiti atsakymo antraštės parametrai

Sesijos ID(čia valdoma serverio)

HTTP atsakymoturinio koduotė

SOAP pranešimo ilgis baitais

Tuščiaeilutė

Web serviso atsakymas

Page 4: MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

HTTP: klaida

HTTP/1.1 500 Internal Server Error.Date: Wed, 03 Mar 2010 22:19:26 GMTServer: Microsoft-IIS/6.0MicrosoftOfficeWebServer: 5.0_PubX-Powered-By: ASP.NETX-AspNet-Version: 1.1.4322Cache-Control: privateContent-Type: application/soap+xml; charset=utf-8Content-Length: 1894

<?xml version="1.0" encoding="utf-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> <env:Fault> <env:Code>env:Sender</env:Code> ... </env:Fault> </env:Body></env:Envelope>

HTTP klaidos kodas (serverio programos klaida)

SOAP klaidos aprašas

SOAP HTTP Binding● Pranešimų MIME tipai● Leistini HTTP metodai● HTTP antraščių laukai● HTTP klaidų kodų naudojimas

SOAP HTTP: résumé

Blokai: tranzakcijos, ID,...

Parametrai, rezultatai,klaida,...

SOAP Body

SOAP Header

SOAP Envelope

HTTP POST

SOAP over SMTP/JMS/...

SMTP: „request“From: [email protected]: [email protected]: Travel to LADate: Thu, 29 Nov 2001 13:20:00 ESTMessage-Id: <[email protected]>

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:departure> <p:departing>New York</p:departing> <p:arriving>Los Angeles</p:arriving> <p:departureDate>2001-12-14</p:departureDate> <p:departureTime>late afternoon</p:departureTime> <p:seatPreference>aisle</p:seatPreference> </p:departure> <p:return> <p:departing>Los Angeles</p:departing> <p:arriving>New York</p:arriving> <p:departureDate>2001-12-20</p:departureDate> <p:departureTime>mid morning</p:departureTime> <p:seatPreference/> </p:return> </p:itinerary> <q:lodging xmlns:q="http://travelcompany.example.org/reservation/hotels"> <q:preference>none</q:preference> </q:lodging> </env:Body></env:Envelope>

SMTP: „response“From: [email protected]: [email protected]: Which NY airport?Date: Thu, 29 Nov 2001 13:35:11 ESTMessage-Id: <[email protected]>In-reply-to:<[email protected]>

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:actor="http://www.w3.org/2001/12/soap-envelope/actor/next" env:mustUnderstand="true"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</reference> <m:dateAndTime>2001-11-29T13:35:00.000-05:00</m:dateAndTime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:actor="http://www.w3.org/2001/12/soap-envelope/actor/next" env:mustUnderstand="true"> <n:name>John Q. Public</n:name> </n:passenger> </env:Header> <env:Body> <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:airportChoices> ...... </p:airportChoices> </p:itinerary> </env:Body></env:Envelope>

Page 5: MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

JMS

import java.naming.Context;import javax.jms.*;...

class ... { public void someMethod(Context ctx, MessageProducer producer, Message jmsMessage, String replyToName, int priority, long timeToLive, String targetService) { Destination replyDestination = ctx.lookup(replyToName); jmsMessage.setJMSReplyTo(replyDestination); jmsMessage.setStringProperty("SOAPJMS_targetService", targetService); jmsMessage.setStringProperty("SOAPJMS_bindingVersion", "1.0");

producer.setDeliveryMode( DeliveryMode.PERSISTENT ); producer.setPriority(priority); producer.setTimeToLive(timeToLive); producer.send(jmsMessage); } }

● SOAP over JMS 1.0 (W3C recomandation, 2012)● Standartizuotas JMS panaudojimas: JMS API,

WSDL, URI

SOAP ir binariniai duomenys

base64Binary / hexBinary

● XML Schema „binarinių“ duomenų tipai● (-) Efektyvumas: duomenų kiekis + skaičiavimai

(kodavimas/dekodavimas)

... <xs:element name="author" type="xs:string"/> <xs:element name="photo" type="xs:base64Binary"/>...

<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="..."> <env:Body> <d:duomenys xmlns:d="http://pavyzdziai.lt/Binarinis"...><d:autorius>Joe</d:autorius><d:photo>/9j/4AAQSkZJRgABAQEASABIAAD/4QBuRXhp...</d:photo> </d:duomenys> </env:Body></env:Envelope>

URL

● URL nuoroda į duomenų failą● Duomenys nėra pranešimo dalis● Nuoroda interpretuojama vartotojo programos

... <xs:element name="author" type="xs:string"/> <xs:element name="photo" type="xs:anyURI"/>...

<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="..."> <env:Body> <d:duomenys xmlns:d="http://pavyzdziai.lt/Binarinis"...> <d:autorius>Joe</d:autorius> <d:photo>http://photos.com/photoData?id=34761GH00</d:photo> </d:duomenys> </env:Body></env:Envelope>

HTTP „multipart“● Skirtingų tipų dalys sudedamos į vieną

pranešimą● Pranešimo turinys turi kelias dalis: „body part“

● Apibrėžimas● Nurodomas „Content-Type“: „multipart/xxx“

multipart/form-datamultipart/mixedmultipart/alternative

● Nurodomas dalių „skirtukas“: „boundary● Kiekviena dalis turi savo antraštę

Pavyzdys: Multipart POSTPOST /cgi-bin/qtest HTTP/1.1Host: aramUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Content-Type: multipart/form-data; boundary=---------------------------287032381131322Content-Length: 582

-----------------------------287032381131322Content-Disposition: form-data; name="datafile1"; filename="r.gif"Content-Type: image/gif

GIF87a.............,...........D..;-----------------------------287032381131322Content-Disposition: form-data; name="datafile2"; filename="g.gif"Content-Type: image/gif

GIF87a.............,...........D..;-----------------------------287032381131322Content-Disposition: form-data; name="datafile3"; filename="b.pdf"Content-Type: application/pdf

%PDF-1.4.............,...........;-----------------------------287032381131322--

Page 6: MIME - Vilniaus universitetasuosis.mif.vu.lt/~liutauras/data/webservices/medziaga/data/p06/WS-P06-1... · SMTP (1980): ASCII teksto žinutės Multipurpose Internet Mail Extensions

„Soap with Attachments“● SOAP pranešimas siunčiamas kaip sudėtinis

„multipart“ pranešimas● Pagrindinio SOAP pranešimo dalis● Antrinės dalys – pridedami duomenys

SOAP Message

Image.png

URI

Compound SOAP structure

Movie.mpg

SOAPMessage

SecondaryPartBag

SwA: antrinės dalys● Dalys identifikuojamos naudojant MIME

atributus Content-Location arba Contend-ID● Kiekviena dalis koduojama atskirai● Turinys gali būti binarinis● Dalys nėra SOAP pranešimo dalis

● Iš SOAP dokumento nurodomos href atributo pagalba (anyURI tipo)

SwA pvz.: naudojant „location“MIME-Version: 1.0Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml; start="<http://claiming-it.com/claim061400a.xml>"Content-Description: This is the optional message description.

--MIME_boundaryContent-Type: text/xml; charset=UTF-8Content-Transfer-Encoding: 8bitContent-ID: <http://claiming-it.com/claim061400a.xml>Content-Location: http://claiming-it.com/claim061400a.xml

<?xml version='1.0' ?><env:Envelopexmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> .. <photo href="http://example.com/claim061400a.tiff"/> .. </env:Body></env:Envelope>

--MIME_boundaryContent-Type: image/tiffContent-Transfer-Encoding: binaryContent-ID: <http://example.com/claim061400a.tiff>Content-Location: http://example.com/claim061400a.tiff

...binary TIFF image...--MIME_boundary--

SwA pvz.: naudojant „ID“ + HTTPPOST /insuranceClaims HTTP/1.1Host: www.risky-stuff.comContent-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml; start="<[email protected]/s445>"Content-Length: XXXXSOAPAction: http://schemas.risky-stuff.com/Auto-ClaimContent-Description: This is the optional message description.

--MIME_boundaryContent-Type: text/xml; charset=UTF-8Content-Transfer-Encoding: 8bitContent-ID: <[email protected]/s445>Content-Location: claim061400a.xml

<?xml version='1.0' ?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> .. <theSignedForm href="cid:[email protected]/s445"/> .. </env:Body></env:Envelope>

--MIME_boundaryContent-Type: image/tiffContent-Transfer-Encoding: binaryContent-ID: <[email protected]/s445>

...binary TIFF image...--MIME_boundary-

HTTPbinding

MTOM● SOAP Message Transmission Optimization

Mechanism● Remiasi XOP: XML-binary Optimized Packaging● Optimizuotas didelių apimčių binariniam turiniui

– Turi būti taikomas xs:base64Binary tipo turiniui● Naudoja specialų Include elementą (operatorių)

– Duomenys interpretuojami kaip XML dokumento dalis

● W3C Recommendation, 2005

MTOM pvz.Content-Type: multipart/related; boundary=MIMEBoundary4A7AE55984E7438034; type="application/xop+xml"; start="<[email protected]>"; start-info="text/xml; charset=utf-8"

--MIMEBoundary4A7AE55984E7438034Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml; action=\"ProcessData\""Content-Transfer-Encoding: 8bitContent-ID: <[email protected]>

<env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope' xmlns:xmlmime='http://www.w3.org/2004/11/xmlmime'> <env:Body> <m:data xmlns:m='http://example.org/stuff'> <m:photo xmlmime:contentType='image/png'> <xop:Include xmlns:xop='http://www.w3.org/2004/08/xop/include' href='cid:http://example.org/me.png'/> </m:photo> </m:data> </env:Body></env:Envelope>

--MIMEBoundary4A7AE55984E7438034Content-Type: image/pngContent-Transfer-Encoding: binaryContent-ID: <http://example.org/me.png>

...binary octets for png...

--MIMEBoundary4A7AE55984E7438034--