XML - wprowadzenie. <message> <text> Dobrze </text> </message> <message> <text> Źle </message> </text> <message> <message> <text> Źle.



Podobne dokumenty
Simple Object Access Protocol

Dostęp do komponentów EJB przez usługi Web Services

SOAP. Autor: Piotr Sobczak

29. Poprawność składniowa i strukturalna dokumentu XML

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Komunikacja i wymiana danych

Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

DOKUMENTACJA TECHNICZNA SMS API MT

Programowanie komponentowe

Gatesms.eu Mobilne Rozwiązania dla biznesu

Dokumenty SEDU składają się z dwóch części: Opisu sprawy Formularza elektronicznego

Zaawansowane aplikacje WWW - laboratorium

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Specyfikacja HTTP API. Wersja 1.6

Rozproszone systemy Internetowe

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Wprowadzenie do technologii XML

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

SPECYFIKACJA WYMIANY DANYCH POMIĘDZY PROGRAMEM KS-APTEKA WINDOWS I SKLEPEM INTERNETOWYM FIRMY ZEWNĘTRZNEJ

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

1 Wprowadzenie do J2EE

XML extensible Markup Language. Paweł Chodkiewicz

Ogólnopolskie Repozytorium Prac Dyplomowych

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

System DiLO. Opis interfejsu dostępowego v. 2.0

Aplikacje internetowe laboratorium XML, DTD, XSL

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Ministerstwo Finansów

Programowanie Komponentowe WebAPI

Wywoływanie metod zdalnych

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Rola języka XML narzędziem

Specyfikacja techniczna. mprofi Interfejs API

Aplikacje RMI Lab4

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Aplikacje RMI

Orange Send MMS. Autoryzacja. Metoda HTTP. Parametry wywołania. API wyślij MMS dostarcza wiadomości MMS. Basic POST

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy XML-a. Zaawansowane techniki programowania

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Tworzenie i wykorzystanie usług sieciowych

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Programowanie internetowe

PHP: bloki kodu, tablice, obiekty i formularze

Plan prezentacji DTD. Wiązanie DTD z dokumentem XML Deklaracja typu dokumentu. Co to jest DTD. Wstęp. Przedmiot: XML i jego zastosowania

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

Wybrane działy Informatyki Stosowanej

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Katalog książek cz. 2

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

SIMON SAYS ARCHITECTURE! Usługi zdalne. Technologie, techniki i praktyki implementacji

76.Struktura oprogramowania rozproszonego.

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

TIN Techniki Internetowe zima

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Komunikacja międzysystemowa

Wywoływanie metod zdalnych

Integracja Obieg Dokumentów - GiS Spis treści

DTD - encje ogólne i parametryczne, przestrzenie nazw

DPDInfoServices. Specyfikacja biznesowa. Version DPD Polska Sp. z O.O. Warszawa

Katalog książek cz. 3: Web Service

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Informację na temat struktury pliku XML

Instrukcja konfiguracji funkcji skanowania

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

c TP: anything: 13 listopada 2004 roku 1

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Dokumentacja Techniczna 1.2. Webtoken MT. Uruchomienie subskrybcji MT poprzez serwis WWW

Instrukcja integracji z portalem ogłoszeń praca.24portal.pl

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

XML-RPC: Zdalne wykonywanie procedur

ESDI. WebService. Wersja 1.2. Strona 1

Dokumentacja techniczna RockPay

Dokumentacja smsapi wersja 1.4

Kurs WWW Język XML, część I

Specyfikacja interfejsów usług Jednolitego Pliku Kontrolnego

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

akademia androida Składowanie danych część VI

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Otwarte protokoły wymiany informacji w systemach ITS

Facelets ViewHandler

Wybrane działy Informatyki Stosowanej

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHNICZNA 1

Specyfikacja wysyłek marketingowych v1.10

Specyfikacja techniczna pliku wymiany danych

Wprowadzenie do XML. Tomasz Przechlewski

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Aplikacje WWW Wprowadzenie

Komponenty sterowane komunikatami

Transkrypt:

XML i SOAP 1. XML (extensive Markup Language). wprowadzenie, zastosowania, przykłady, specyfikacje DTD (Document Type Definition). 2. SOAP (Simple Object Access Protocol) struktura wiadomości, zdalne wywołanie metody z wykorzystaniem SOAP, przykłady. 1

XML - wprowadzenie XML (extensive Markup Language) jest tekstowym językiem znaczników. Współcześnie jest on używany do wymiany danych między programami działającymi w środowisku sieciowym. Podobnie jak HTML do opisu danych używa tagów (identyfikatorów otoczonych nawiasami < i >, np. <tag> ). W przeciwieństwie do HTML'a tagi służą raczej do identyfikacji danych a nie do określenia sposobu ich prezentacji. <message> <to>odbiorac@adres.net</to> <from>nadawca@innyadres.net</from> <subject>coś o XML'u</subject> <text> Ciekawe to czego to jest potrzebne. </text> </message> 2

XML - wprowadzenie Najważniejsza różnica pomiędzy XML i HTML polega na przestrzeganiu hierarchicznego formatu dokumentu w pierwszym przypadku: dla każdego tagu musi istnieć tag zamykający: (<text>...</text>), tag <text> może być zamknięty tylko przez </text>, tagi nie zawierające treści można zapisywać w postaci <text/>. <message> <text> Dobrze </text> </message> <message> <text/> </message> <!-- Dobrze (komentarz) --> <message> <text> Źle </message> </text> <message> <text> Źle </message> 3

XML tagi i atrybuty Tagi mogą posiadać atrybuty dodatkową informację zawartą wewnątrz tagu: <message to= odbiorac@adres.net from= nadawca@innyadres.net subject= coś o XML'u > <text> Ciekawe do czego to jest potrzebne. </text> </message> Używanie atrybutów i tagów wewnętrznych jest niemal równoważne tzn. wiadomości (messages) opisywane przez dwa przedstawione dokumenty XML są takie same. Wybór sposobu opisu uzależniony jest od upodobania i konkretnej sytuacji. 4

XML nagłówek Każdy dokument XML rozpoczyna się (opcjonalnym) nagłówkiem. W najprostszej wersji wygląda on następująco: <?xml version= 1.0?> Często jednak zawiera on dodatkowe informacje, np. <?xml version= 1.0 encoding= ISO-8859-1 standalone= yes?> version określa wersję XML wykorzystywaną do opisu danych, encoding kodowanie znaków wewnątrz dokumentu. Domyślnie UTF-8 (tzw. compressed unicode). standalone określa, czy dokument jest zależny od jakiś zewnętrznych dokumentów. 5

Jest wiele powodów dla których warto używać XML'a. Niektóre z nich: format tekstowy można wykorzystać dowolny edytor tekstowy do obsługi dokumentu XML, identyfikacja (opis) danych główny nacisk na strukturę danych a nie na sposób ich prezentacji, prosta konwersja do formatów korzystających ze styli możliwość łatwego zdefiniowania przekształceń dokument XML w formaty określające sposób prezentacji dokumentu (HTML, PDF, TeX, RTF), modularność poszczególne moduły mogą być używane wielokrotnie odwołania do innych dokumentów, hierarchiczna struktura pozwala zwykle na szybsze przeszukiwanie dokumentu. XML zastosowania 6

Podstawowe zastosowania XML'a. tradycyjne przetwarzanie danych dane zapisane w formacie XML są przetwarzane przez odpowiedni program, programowanie opisane dokumentami (document-driven programming) sposób działania programu jest opisany w dokumencie XML, który opisuje używane obiekty, logikę biznesową, interfejs użytkownika. Na podstawie tych informacji aplikacja jest tworzona w locie, archiwizacja fundament dla document-driven programming. Odpowiednio skonfigurowane komponenty mogą zostać zapisane do późniejszego wykorzystania, XML - zastosowania powiązywanie (binding) dokument opisujący strukturę XML'a (DTD) może być wykorzystany do budowy szkieletu aplikacji przetwarzającej dane. 7

XML - przykład <?xml version='1.0' encoding='utf-8'?> <!-- A SAMPLE set of slides --> <slideshow title="przykładowy pokaz slajdów" date="24.01.2005" author="anonim" > <!-- TITLE SLIDE --> <slide type="all"> <title>obudź się!</title> </slide> <!-- OVERVIEW --> <slide type="tech"> <title>przegląd</title> <item>dlaczego <em>xml</em> jest wspaniały</item> <item/> <item>technologia <em>soap</em> z załącznikami</item> </slide> </slideshow> 8

XML - DTD Aby poprawnie zinterpretować dane zapisane w XML'u korzysta się ze specyfikacji zapisanej w plikau DTD (Document Type Definition). Dzięki temu program analizujący dokument XML (parser) potrafi sprawdzić formalną poprawność pliku oraz utworzyć odpowiednie obiekty. I tak: <!ELEMENT slideshow (slide+)> mówi, że element slideshow zawiera z co najmniej jedną strukturę slide. Kwalifikatory:? zero lub jedną, * zero lub więcej, + jedną lub więcej. 9

XML - DTD <!ATTLIST slideshow title CDATA #REQUIRED date CDATA #IMPLIED author CDATA "unknown" > określa trzy atrybuty pojawiające się w tagu slideshow. Każdy z nich jest typu CDATA (nieparsowalne) pole tekstowe. Podanie title jest wymagane w przeciwieństwie do date i author. Jeśli date nie zostanie podana wartość tego atrybutu jest określona przez aplikację przetwarzającą dane. W przypadku braku określenia pola author zostanie mu przypisana domyślna wartość unknown. Inny często używany typ to #PCDATA parsowalne pole tekstowe. 10

XML - DTD <!ELEMENT slide (title, item*)> <!ATTLIST slide type (tech exec all) #IMPLIED Struktura slide składa się z title oraz dowolnej liczby obiektów item. Każdy slide może posiadać atrybut type przybierający jedną z trzech wartości: tech, exec, all. Warto zwrócić uwagę, że dokument ani dokument XML ani odpowiadający mu DTD nie zawiera interpretacji odpowiadającej tym trzem stałym wartościom. 11

XML - DTD Przykładowy plik DTD dla pokazanego wcześniej dokumentu mógłby wyglądać następująco: <?xml version='1.0' encoding='us-ascii'?> <!-- DTD dla przykładowego pokazu slajdów --> <!ELEMENT slideshow (slide+)> <!ATTLIST slideshow title CDATA #REQUIRED date CDATA #IMPLIED author CDATA "unknown" > <!ELEMENT slide (title, item*)> <!ATTLIST slide type (tech exec all) #IMPLIED > <!ELEMENT title (#PCDATA)> <!ELEMENT item (#PCDATA item)* > 12

SOAP SOAP (Simple Object Access Protocol) jest ogólnym protokołem do przesyłania wiadomości (messages). Jest też standardem wykorzystywanym obecnie do komunikacji z usługami sieciowymi (web services). Wiadomość to dokument w formacie XML, który może być przesyłany za pośrednictwem dowolnego, popularnego protokołu z warstwy zastosowań (najczęściej HTTP lub HTTPS). SOAP jest wykorzystywany w ramach architektury orientowanej na usługi, umożliwiając przekształcenie aplikacji rozproszonej na usługi SOAP, które mogą być zdalnie wywołane za pomocą dowolnego urządzenia. 13

SOAP schemat działania System żądający usługi Wiadomość SOAP (dokument XML) 1 Aplikacja kliencka 2 5 System udostępniający usługi Serwer HTTP Strona JSP, ASP, PHP,CGI 3 Serwer SOAP 4b Obiekt COM, CORBA,... 4a Zdalne wywołanie procedury 14

Wiadomość SOAP Podstawową jednostką komunikacji pomiędzy klientem SOAP a serwisem udostępniającym usługi jest wiadomość SOAP. Wiadomość SOAP część główna MIME (text/xml) załącznik załącznik... załącznik Koperta SOAP Nagłówek SOAP pozycja pozycja Treść SOAP pozycja pozycja 15

Wiadomość SOAP Przykładowa postać wiadomości SOAP: <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV: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-ENV:Body> <ns1:dogooglesearch xmlns:ns1="urn:googlesearch" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <key xsi:type="xsd:string">00000000000000000000000000000000</key> <q xsi:type="xsd:string">learning Wireless Java</q> <start xsi:type="xsd:int">0</start> <maxresults xsi:type="xsd:int">10</maxresults> <filter xsi:type="xsd:boolean">true</filter> <restrict xsi:type="xsd:string" /> <safesearch xsi:type="xsd:boolean">false</safesearch> <lr xsi:type="xsd:string" /> <ie xsi:type="xsd:string">latin1</ie> <oe xsi:type="xsd:string">latin1</oe> </ns1:dogooglesearch> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 16

Klient SOAP import java.net.*; import javax.xml.soap.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; public class SoapClient { public static void main(string args[]) { try { // Utwórz połączenie SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance(); SOAPConnection connection = scf.createconnection(); SOAPFactory sf = SOAPFactory.newInstance(); // Stwórz wiadomość MessageFactory mf = MessageFactory.newInstance(); SOAPMessage message = mf.createmessage(); // Stwórz części wiadomości SOAPPart soappart = message.getsoappart(); // Wstaw treść wiadomości StreamSource msg = new StreamSource(new FileInputStream ("c:/request.xml")); soappart.setcontent(msg); 17

Klient SOAP /* alternatywnie SOAPEnvelope envelope = soappart.getenvelope(); SOAPBody body = envelope.getbody(); Name bodyname = sf.createname("dogooglesearch", "ns1", "urn:googlesearch"); SOAPBodyElement bodyelement = body.addbodyelement(bodyname); Name name = sf.createname("key"); SOAPElement key = bodyelement.addchildelement(name); key.addtextnode("00000000000000000000000000000000");... */ // Wyświetl wysyłaną kopertę System.out.println("SOAP Request Sent:"); message.writeto(system.out); // Ustaw punkt docelowy URL endpoint = new URL ("http://api.google.com/search/beta2"); // Wyślij wiadomość SOAPMessage response = connection.call(message, endpoint); // Zamknij połączenie connection.close(); 18

Klient SOAP } } // Wyświetl odpowiedź System.out.println("SOAP Response Received:"); // Utwórz transformer TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newtransformer(); // Odbierz obpowiedź Source content = response.getsoappart().getcontent(); // Wyświetl odpowiedź w konsoli StreamResult result = new StreamResult(System.out); transformer.transform(content, result); System.out.println(); } catch(exception e) { System.out.println(e.getMessage()); } 19

Załączniki SOAP Załączniki w wiadomości SOAP są umieszczane w sposób identyczny jak w wiadomościach email.... </SOAP-ENV:Envelope> --MIME_boundary Content-Type: image/tiff Content-Transfer-Encoding: base64 Content-ID: <claim061400a.tiff@claiming-it.com>...base64 encoded TIFF image... --MIME_boundary Content-Type: image/jpeg Content-Transfer-Encoding: binary Content-ID: <claim061400a.jpeg@claiming-it.com>...raw JPEG image.. --MIME_boundary-- 20

Załączniki SOAP Dostęp do załączników w odebranej wiadomości można uzyskać posługując się instancją klasy AttachmentPart:... java.util.iterator iterator = message.getattachments(); while (iterator.hasnext()) { AttachmentPart attachment = (AttachmentPart)iterator.next(); String id = attachment.getcontentid(); String type = attachment.getcontenttype(); System.out.print("Attachment " + id + " has content type " + type); if (type == "text/plain") { Object content = attachment.getcontent(); System.out.println("Attachment " + "contains:\n" + content); } }... 21

Dodatkowe możliwości Funkcjonalność SOAP zawiera dodatkowo kilka nieomawianych tu elementów. Najważniejsze z nich to: 1. Atrybuty w nagłówku określają sposób przetwarzania wiadomości przez odbiorcę. Umożliwiają one m. in.: identyfikację klienta, zarządzanie tranzakcjami, itp. 2. Obsługa błędów w przypadku błędu klient otrzymuje kopertę SOAP zawierającą: kod błędu, opis błędu, nazwę usługi, która zwróciła błąd, szczegóły błędu. 22

Podsumowanie SOAP umożliwia jednorodny mechanizm dostępu do zdalnych usług. Jego działanie opiera się na wiadomościach zapisanych w formacie XML, które są wymieniane między klientem a serwerem za pomocą jakiegokolwiek protokołu warstwy zastosowań. Dzięki temu aplikacja kliencka może być napisana w dowolnym języku programowania, który umożliwia nawiązanie połączenia z serwerem SOAP. Istnieje możliwość zbudowania serwera SOAP, który umożliwi dostęp do zdalnych obiektów wykorzystujących dowolną z wcześniej omówionych technologii (RMI, CORBA, COM, RPC). 23