Web Services mit PHP - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

Web Services mit PHP

Description:

a basic type system ... An XML Schema Example ?xml version='1.0' ... UDDI is a directory for storing information about web services ... – PowerPoint PPT presentation

Number of Views:114
Avg rating:3.0/5.0
Slides: 40
Provided by: stefan114
Category:
Tags: php | mit | register | services | web

less

Transcript and Presenter's Notes

Title: Web Services mit PHP


1
Web Services mit PHP
  • Konrad Wulf
  • wulf_at_hlrs.de
  • Softwaretechnology Group
  • http//www.hlrs.de/organization/st
  • High Performance Computing Centre Stuttgart (HLRS)

Diese Folien liegen unter http//programming.jaco
mac.de/Web_service_kurs_php.ppt
2
Zitat
  • Wenn Du ein Schiff bauen willst, so trommle
    nicht Menschen zusammen, um Holz zu beschaffen,
    Werkzeuge vorzubereiten, Aufgaben zu vergeben und
    die Arbeit einzuteilen, sondern lehre die
    Menschen die Sehnsucht nach dem weiten endlosen
    Meer.
  • - Antoine de Saint-Exupéry

3
Web Services Was ist das? Warum? Und Wozu?
  • Definition
  • XML basierte Kommunikation
  • Remote procedure calls gt verteilte Anwendungen
  • Attraktivität
  • Standardisierte Schnittstellen
  • Interoperabel jede Anwendung auf x-beliebigem
    Betriebssystem und programmiert in egal welcher
    Sprache, irgendwo auf der Welt, kann mit jeder
    anderen kommunizieren.
  • Simple Idee, starke Auswirkungen

4
Vielseitigkeit PHP
  • Ein PHP/NuSOAP Client, der von einem Java Web
    Service das Wissen bekommt ...

5
Vielseitigkeit J2ME
  • Ein J2ME kSOAP Client fürs Handy, entwickelt mit
    dem Wireless Toolkit (WTK) von Sun, greift auf
    den gleichen Service zu.

6
Vielseitigkeit java.swing
7
Gliederung
  • Einführung XML, DTD und Schemata
  • Webservice Grundkonzepte SOAP, WSDL, UDDI
  • Einfachen Client erstellen mit PHP/NuSOAP
  • Einfachen Server erstellen aus einem Interface /
    einer WSDL
  • Kenntnisse vertiefen complex types, access
    control, service orchestration

8
Extensible Markup Language (XML) 1.0
  • XML dient der Formatierung von Daten
  • XML Markups bestehen immer aus einer öffnenden
    und einer schließenden Marke (ltmarkegtlt/markegt).
  • Dieser Marken dürfen verschachtelt werden, nicht
    jedoch über Kreuz gt formelle Richtigkeit d.
    Dokumentes
  • Das Format von XML Dokumenten wird i.d.R. durch
    DTDs (Document Type Definition) oder XML
    Schemata festgelegt. Anhand dieser Regeln kann
    die Validität des Dokumentes geprüft werden.
  • Spezifikation http//www.w3.org/TR/REC-xml

9
An XML file with a DTD
lt?xml version"1.0"?gt lt!DOCTYPE note
lt!ELEMENT note (to,from,heading,body)gt
lt!ELEMENT to (PCDATA)gt lt!ELEMENT from
(PCDATA)gt lt!ELEMENT heading (PCDATA)gt
lt!ELEMENT body (PCDATA)gt gt ltnotegt
lttogtTovelt/togt ltfromgtJanilt/fromgt
ltheadinggtReminderlt/headinggt ltbodygtDon't forget
me this weekendlt/bodygt lt/notegt
Document Type Definition (DTD)
XML Data
10
XML Schema
  • a basic type system
  • XML schemas define a wide range of basic types
    like integer, float or byte, but also non-numeric
    types like date or time.
  • complex types
  • Certainly the most important feature is the
    possibility to define own data types, like
    tailor-made objects, making it possible to follow
    the object oriented paradigm.
  • define extensible logical rules
  • XML schemas allow to define logical rules like
    the minimal and maximal occurrence of an element,
    grouping several elements together or to combine
    XML documents and schemata dynamically.
  • Specification at http//www.w3.org/TR/xmlschema-0/

11
An XML Schema Example
lt?xml version"1.0"?gtltxsschema
xmlnsxs"http//www.w3.org/2001/XMLSchema"target
Namespace"http//www.w3schools.com"xmlns"http/
/www.w3schools.com"elementFormDefault"qualified"
gt ltxselement name"note"gt
ltxscomplexTypegt ltxssequencegt
ltxselement name"to" type"xsstring"/gt
ltxselement name"from" type"xsstring"/gt
ltxselement name"heading" type"xsstring"/gt
ltxselement name"body" type"xsstring"/gt
lt/xssequencegt lt/xscomplexTypegt
lt/xselementgtlt/xsschemagt
12
XML Schemas are the Successors of DTDs
  • XML Schemas are being more and more used in Web
    applications as a replacement for DTDs. Here are
    some reasons XML Schemas ...
  • ... are extensible to future additions
  • ... are richer and more useful than DTDs
  • ... are written in XML
  • ... support data types
  • ... support namespaces

13
Gliederung
  • Einführung XML, DTD und Schemata
  • Webservice Grundkonzepte SOAP, WSDL, UDDI
  • Einfachen Client erstellen mit PHP/NuSOAP
  • Einfachen Server erstellen aus einem Interface /
    einer WSDL
  • Kenntnisse vertiefen complex types, access
    control, service orchestration

14
Graph SOAP, WSDL, UDDI
15
Simple Object Access Protocol (SOAP) 1.1
  • SOAP is a lightweight protocol for exchange of
    information in a decentralized, distributed
    environment. It is an XML based protocol that
    consists of three parts an envelope that defines
    a framework for describing what is in a message
    and how to process it, a set of encoding rules
    for expressing instances of application-defined
    datatypes, and a convention for representing
    remote procedure calls and responses. SOAP can
    potentially be used in combination with a variety
    of other protocols however, the only bindings
    defined in the specification describe how to use
    SOAP in combination with HTTP and HTTP Extension
    Framework.
  • Specification at http//www.w3.org/TR/SOAP/

16
Structure of a SOAP Message
17
An Example of a SOAP Request
POST /StockQuote HTTP/1.1Host
www.stockquoteserver.comContent-Type text/xml
charset"utf-8"Content-Length nnnnSOAPAction
"Some-URI"ltSOAP-ENVEnvelopexmlnsSOAP-ENV"htt
p//schemas.xmlsoap.org/soap/envelope/"SOAP-ENVe
ncodingStyle"http//schemas.xmlsoap.org/soap/enco
ding/"gt ltSOAP-ENVBodygt     ltmGetLastTradePrice
xmlnsm"Some-URI"gt         ltsymbolgtDISlt/symbolgt
    lt/mGetLastTradePricegt lt/SOAP-ENVBodygtlt/S
OAP-ENVEnvelopegt
18
Corresponding SOAP Response
HTTP/1.1 200 OKContent-Type text/xml
charset"utf-8"Content-Length
nnnnltSOAP-ENVEnvelope  xmlnsSOAP-ENV
"http//schemas.xmlsoap.org/soap/envelope/"SOAP-E
NVencodingStyle "http//schemas.xmlsoap.org/soap
/encoding/"/gt ltSOAP-ENVBodygt     ltmGetLastTrad
ePriceResponse xmlnsm"Some-URI"gt         ltPrice
gt34.5lt/Pricegt     lt/mGetLastTradePriceResponsegt
lt/SOAP-ENVBodygtlt/SOAP-ENVEnvelopegt
19
Corresponding SOAP Fault
  • HTTP/1.1 200 OKContent-Type text/xml
    charset"utf-8"Content-Length
    nnnnltSOAP-ENVEnvelope  xmlnsSOAP-ENV
    "http//schemas.xmlsoap.org/soap/envelope/"SOAP-E
    NVencodingStyle "http//schemas.xmlsoap.org/soap
    /encoding/"/gt ltSOAP-ENVBodygt
    ltSOAP-ENVFaultgt ltfaultcodegtClientlt/faultcod
    egt ltfaultactorgtlt/faultactorgt
    ltfaultstringgtYou provided a Company Code that is
    not listed.lt/faultstringgt
    ltfaultdetailgtlt/faultdetailgt
    lt/SOAP-ENVFaultgt lt/SOAP-ENVBodygtlt/SOAP-ENVEn
    velopegt

20
Web Services Description Language (WSDL) 1.1
  • WSDL is an XML format for describing network
    services as a set of endpoints operating on
    messages containing either document-oriented or
    procedure-oriented information. The operations
    and messages are described abstractly, and then
    bound to a concrete network protocol and message
    format to define an endpoint. Related concrete
    endpoints are combined into abstract endpoints
    (services). WSDL is extensible to allow
    description of endpoints and their messages
    regardless of what message formats or network
    protocols are used to communicate, however, the
    only bindings described in the specification
    describe how to use WSDL in conjunction with SOAP
    1.1, HTTP GET/POST, and MIME.
  • Specification at http//www.w3.org/TR/wsdl

21
Structure of a WSDL Description
22
WSDL Description Example 1
lt?xml version"1.0" encoding"UTF-8"
?gtltdefinitions name"HelloWorldService"
targetNamespace"http//hello.org/wsdl"
xmlnstns"http//hello.org/wsdl"
xmlns"http//schemas.xmlsoap.org/wsdl/"
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
xmlnssoap"http//schemas.xmlsoap.org/wsdl/soap/"
gt lttypes /gt ltmessage name"sayHello"gt
ltpart name"String_1" type"xsdstring" /gt
lt/messagegt ltmessage name"sayHelloResponse"gt
ltpart name"result" type"xsdstring" /gt
lt/messagegt ltportType name"HelloIFPort"gt
ltoperation name"sayHello"gt
ltinput message"tnssayHello" /gt
ltoutput message"tnssayHelloResponse" /gt
lt/operationgt lt/portTypegt ...
23
WSDL Description Example 2
... ltbinding name"HelloIFBinding"
type"tnsHelloIFPort"gt ltoperation
name"sayHello"gt ltinputgt
ltsoapbody encodingStyle"http//schemas.xmlsoa
p.org/soap/encoding/" use"encoded"
namespace"http//hello.org/wsdl" /gt
lt/inputgt ltoutputgt
ltsoapbody encodingStyle"http//schemas.xmlsoap.o
rg/soap/encoding/" use"encoded"
namespace"http//hello.org/wsdl" /gt
lt/outputgt ltsoapoperation
soapAction"" /gt lt/operationgt
ltsoapbinding transport"http//schemas.xmlsoap.or
g/soap/http" style"rpc" /gt lt/bindinggt
ltservice name"HelloWorld"gt ltport
name"HelloIFPort" binding"tnsHelloIFBinding"gt
ltsoapaddress location"http//java.rus
.uni-stuttgart.de/jaxrpc-hello/jaxrpc/HelloIF"
/gt lt/portgt lt/servicegtlt/definitionsgt
24
What is UDDI?
  • UDDI is a platform-independent framework for
    describing services, discovering businesses, and
    integrating business services by using the
    Internet.
  • UDDI stands for Universal Description, Discovery
    and Integration
  • UDDI is a directory for storing information about
    web services
  • UDDI is a directory of web service interfaces
    described by WSDL
  • UDDI communicates via SOAP
  • UDDI is built into the Microsoft .NET platform
  • Example http//uddi.microsoft.com/
    http//www.xmethods.net

25
Gliederung
  • Einführung XML, DTD und Schemata
  • Webservice Grundkonzepte SOAP, WSDL, UDDI
  • Einfachen Client erstellen mit PHP/NuSOAP
  • Einfachen Server erstellen aus einem Interface /
    einer WSDL
  • Kenntnisse vertiefen complex types, access
    control, service orchestration

26
PHP Webservices mit NuSOAP
  • Quelle
  • http//dietrich.ganx4.com/nusoap/index.php
  • Tutorials NuSOAP
  • Einfach http//www.zend.com/zend/tut/tutorial-cam
    pbell.php
  • Weiterführend
  • http//programming.jacomac.de/NuSOAP_wrox_SampleC
    hapter_1861007469.pdf
  • Wichtig
  • NuSOAP braucht die globale Variable
    HTTP_RAW_POST_DATA. Diese ist nur verfügbare,
    wenn in php-config always_populate_raw_post_data
    On

27
BLZ Abfrage in PHP/NuSOAP
  • lt?php require_once('nusoap-0.6.3/nusoap.php')
    blz "60050101" soapclient new
    soapclient('http//appserver.pepperzak.net/bankcod
    e/BankCodeEJBHome/wsdl.jsp','wsdl') proxy
    soapclient-gtgetProxy() reply
    proxy-gtgetNameByCode(blz) echo "Name der
    Bank ".reply ?gt

http//rus.jacomac.de/web_services/blz_client.php
28
Erweiterungen
  • Ausgabe der SOAP Nachrichten
  • zu sehen unter http//rus.jacomac.de/web_services
    /blz_client_nachrichten.php
  • Auffangen der Fehler

echo 'ltxmpgt'.proxy-gtrequest.'lt/xmpgt'echo
'ltxmpgt'.proxy-gtresponse.'lt/xmpgt'
if(err proxy-gtgetError()) print "ERROR
err" /bei BLZ sendet server keine faults /
29
Gliederung
  • Einführung XML, DTD und Schemata
  • Webservice Grundkonzepte SOAP, WSDL, UDDI
  • Vorbereitung Arbeitsplatz
  • Einfachen Client erstellen mit PHP/NuSOAP
  • Einfachen Server erstellen aus einer WSDL
  • Kenntnisse vertiefen complex types, access
    control, service orchestration

30
say_hello_service.php
lt?require_once('nusoap-0.6.3/nusoap.php')s
new soap_serverfunction sayHello(inputString)
if(is_string(inputString)) return
"Seien Sie willkommen, " . inputString . "!"
else return new soap_fault('Client','
','The parameter to this service must be a
string.') s-gtregister('sayHello')s-gt
service(HTTP_RAW_POST_DATA)?gt
31
Corresponding CLI Client
  • lt?require_once('nusoap-0.6.3/nusoap.php')if
    (empty(argv1)) echo "Sie muessen noch
    einen Parameter angeben, damit es klappt."
    exitmyString argv1parameters
    array(myString)s new soapclient('http//rus.
    jacomac.de/web_services/say_hello_service_wsdl.php
    ')result s-gtcall('sayHello',parameters)i
    f(!err s-gtgetError()) echo 'Result
    '.result else echo 'Error '.err?gt

32
Authorisierung
  • The soapclient object provides a method called
    setCredentials(). This method is used when HTTP
    authentication is needed to access a SOAP server.
    The two arguments to the method are a username
    and password. Its functionality is shown in the
    example below
  • s new soapclient(
  • 'http//somesite.com/protected/service.php')
  • s-gtsetCredentials('myUsername','myPassword')
  • You can then continue your SOAP calls, as you
    would normally do. The most common way of
    implementing this level of security on the server
    is to use Apache's .htaccess files to implement
    required authorization to protect a directory or
    file.
  • Wichtig setCredentials() muss vor dem
    eigentlichen Aufruf ausgeführt werden, da Header
    zuerst gesendet werden. Die methode macht nix
    anderes als header (' Authorization Basic
    '.base64_encode("usernamepassword")."\r\n")

33
How to generate a WSDL File with PHP/NuSOAP
  • The correponding WSDL file can be found at
    http//rus.jacomac.de/web_services/say_hello_servi
    ce_wsdl.php?wsdl
  • The source http//rus.jacomac.de/web_services/say
    _hello_service_wsdl.phps
  • Further Instructions on how to generate WSDLs
    with PHP/NuSOAP are available http//dietrich.ganx
    4.com/nusoap/testbed/round2_base_server.phps

34
Gliederung
  • Einführung XML, DTD und Schemata
  • Webservice Grundkonzepte SOAP, WSDL, UDDI
  • Einfachen Client erstellen mit PHP/NuSOAP oder
    Java/GLUE
  • Einfachen Server erstellen aus einem Interface /
    einer WSDL
  • Kenntnisse vertiefen complex types, access
    control

35
Complex Types Beispiel Google
  • Es können per SOAP ganze Objekte übergeben
    werden. Diese heißen in der Terminologie der WSDL
    Complex Types. Anhand vom Google Webservice
    soll der Umgang mit solchen Datentypen gezeigt
    werden
  • Authorisierungscode holen https//www.google.com/
    accounts/NewAccount?continuehttp//api.google.com
    /createkeyfollowuphttp//api.google.com/createke
    y
  • WSDL befindet sich unter http//rus.jacomac.de/we
    b_services/GoogleSearch.wsdl
  • PHP Beispiel http//rus.jacomac.de/web_services/g
    oogle_client.php?searchsomethinguseful
  • Sourcecode
  • http//rus.jacomac.de/web_services/google_client.p
    hps
  • Java Beispiel
  • http//java.rus.uni-stuttgart.de/web_services_kur
    s/GoogleClient.java

36
GoogleClient Klassendiagramm
Das gesuchte Element
37
Wissensquiz
  • Wissensquiz à la Wer wird Millionär?
  • Die WSDL liegt unter http//java.rus.uni-stuttgart
    .de/quiz/quiz.wsdl
  • Bitte einen Client erstellen.

38
Wissensquiz eine Lösung
  • Zu sehen unter http//rus.jacomac.de/web_services
    /wissens_quiz/
  • SourceCode von der Datenbankabstraktionsschicht
    http//rus.jacomac.de/web_services/wissens_quiz/li
    b/QuizDatabase_soap.inc.phps

39
IDEs für PHP
  • PHPEdit (http//www.phpedit.net/products/PHPEdit/)
    , Nusphere PHPEd(http//www.nusphere.com/products/
    )
  • Texteditoren mit Syntax-highlighting gibt es
    viele, doch richtig Spass macht es erst wenn man
    (deutlich produktivitätssteigernd)
  • kontextbezogen in die Dokumentation springen
    kann, wenn
  • die verfügbare Funktionen und deren Signatur
    automatisch angezeigt werden (Code completion),
    wenn
  • bereits Sprache und Webserver konfiguriert und
    integriert sind, wenn
  • es eine Überblicksnavigation für vorhandene
    Funktionen und Klassenmethoden gibt und nicht
    zuletzt
  • ein Debugger integriert ist, bei dem man den
    Programmablauf zu Laufzeit detailliert
    mitverfolgen kann
Write a Comment
User Comments (0)
About PowerShow.com