Beispiele zum Abrufen der Liga-Daten in verschiedenen Programmiersprachen

Beispiel der Implementierung des Webservices in einer C#-Konsolenanwendung mit Visual Studio 2005 bzw C# Express.

  • Neues Projekt
    Erstellen einer neuen Konsolenanwendung mit dem Datei --> Neu --> Projekt - Dialog.
  • Der nächste Schritt besteht in dem Hinzufügen des Verweises auf den Webservice:
    Verweis hinzufügen Verweis hinzufügen
  • ... und so sieht der Programmcode aus, der zu Testzwecken einfach die Spiele und die Ergebnisse eines Spieltages auf der Konsole ausgibt:

    class Program
    {
        static void Main(string[] args)
        {
            de.msiggi.Sportsdata service = new Sportstest.de.msiggi.Sportsdata();

            // als Beispiel der 22. Spieltag der 1.Bundesliga 2006/2007:
            foreach (de.msiggi.Fussballdaten Spieldaten in service.GetFusballdaten(22,"bl1",2006,"Test"))
            {
                Console.WriteLine(Spieldaten.Spieldatum.ToString() +": " + Spieldaten.Team1 + " : " + Spieldaten.Team2 + " " +
                Spieldaten.ErgebnisTeam1.ToString() + ":" + Spieldaten.ErgebnisTeam2.ToString());
            }
        }
    }

  • Ergebnis
    Das fertige Ergebnis nach dem Starten (Strg + F5) des Projekts

SOAP mit PHP 4 und PEAR Package

Benötigt wird hier PHP 4.3.0 oder höher.
download Download des Beispiels inkl. PEAR

Die Benutztung von SOAP-Diensten gestaltet sich unter PHP in der Version 4 etwas schwieriger, da PHP 4 keine eigenen SOAP Funktionen hat. Also müssen diese mit Packages nachgerüstet werden. Als Beispiel waren NuSOAP oder das PEAR/SOAP Package zu nennen. Das PEAR Package wird einfach heruntergeladen und auf den eigenen Webspace hochgeladen. Benötigt wird aber nur der PEAR Core und das SOAP Package sowie noch 3 andere einzelne Dateien aus dem HTTP und Net Package (diese werden von SOAP benötigt). Hier kann das SOAP Package manuell heruntergeladen werden, um es auf dem Server von Hand einzufügen: http://pear.php.net Alternativ kann auch einfach nur der hier als Beispiel angehangene Teil mit dem PEAR Core und den benötigten Dateien heruntergeladen werden.

Baumansicht Es muss dann auf den Server/Webspace geladen werden und wird dann wie in der Abbildung eingefügt, d.h. eine index.php und ein PEAR Ordner in einem Verzeichnis.
set_include_path($_SERVER['DOCUMENT_ROOT'] . '/PEAR/');Beispiel_PHP4
require_once('SOAP/Client.php');
Dies stellt in der index.php die erfoderlichen SOAP Funktionen/Klassen zur Verfügung.

Set-include_path() kann allerdings in den Server Einstellungen gesperrt sein! Dann müssten ca. 15 Dateien editiert werden.

Erklärung: Diese Funktion setzt einen Standard-Pfad für include Befehle, da in den PEAR Packages nur relative Angaben vorkommen. Sollte die Funktion gesperrt sein, können die einzelnen Packages nicht gefunden werden bzw. finden sich auch gegenseitig nicht, es müssten dann in mehreren Dateien die relativen Pfadangaben der einzelnen Packages durch absolute ersetzt werden, die mit set_include_path automatisch davor gesetzt werden würden.
Quellcode
<?php
  set_include_path($_SERVER['DOCUMENT_ROOT'] . '/PEAR/');
  require_once('SOAP/Client.php');

  $wsdl=new SOAP_WSDL('http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL');
  $sportsdata=$wsdl->getProxy();

  $paarung=$sportsdata->GetMatchdataByGroupLeagueSaison(24,'bl1','2007');
// Jetzt sind in $paarung die Spieldaten enthalten
?>
Beispielausgabe
<table align='left' width='900' border='1'bordercolor='#000000' 
bordercolorlight='#FFFFFF' bordercolordark='#000000'>

    <tr>
      <td align='center'>Spielbeginn</td>
      <td align='center'>ID</td>
      <td align='center'>Team 1</td>
      <td align='center'>Team 2</td>
      <td align='center' colspan='2'>Ergebnis</td>
      <td align='center'>Status</td>
    </tr>
<?php
    for ($i=0; $i<=8; $i++)
    {
    echo "<tr>";
    echo("<td align='center'>".$paarung[$i]->matchDateTime."</td>");
    echo("<td align='center'>".$paarung[$i]->matchID."</td>");
    echo("<td align='center'>".$paarung[$i]->nameTeam1."</td>");
    echo("<td align='center'>".$paarung[$i]->nameTeam2."</td>");
    echo("<td align='center'>".$paarung[$i]->pointsTeam1."</td>");
    echo("<td align='center'>".$paarung[$i]->pointsTeam1."</td>");
    echo("<td align='center'>".$paarung[$i]->matchIsFinished."</td>");
    echo "</tr>";
    }
?>
</table>
Spielbeginn ID Team 1 Team 2 Ergebnis Status

2008-03-14T20:30:00

1111

FC Schalke 04

MSV Duisburg

2

2

true

2008-03-15T15:30:00

1102

VfL Bochum

VfB Stuttgart

1

1

true

2008-03-15T15:30:00

1103

Energie Cottbus

FC Bayern München

2

2

true

2008-03-15T15:30:00

1105

Hamburger SV

Borussia Dortmund

1

1

true

2008-03-15T15:30:00

1106

Hansa Rostock

Hertha BSC

0

0

true

2008-03-15T15:30:00

1107

Hannover 96

Arminia Bielefeld

2

2

true

2008-03-15T15:30:00

1108

Karlsruher SC

Eintracht Frankfurt

0

0

true

2008-03-16T17:00:00

1110

Werder Bremen

VfL Wolfsburg

0

0

true

2008-03-16T17:00:00

1104

Bayer Leverkusen

1. FC Nürnberg

4

4

true


Achtung! Fehler in neustem PEAR-Package
Dieser Fehler führt dazu, dass bei Ausgabe des Beispiels nur die ersten 7 Spiele eines Spieltages ausgegeben werden. Die Durchführung dieses "Patches" ist nur nötig, wenn bei dem Beispiel nur 7 Spiele ausgegeben werden.

/PEAR/SOAP/Base.php editieren
Zeile 783
                            $return->{$item->name} =& $this->_decode($item);
                        }
                    } elseif (isset($return->{$item->name})) {
                        //$isstruct = false;
                        if (count(get_object_vars($return)) == 1) {
                            $d =& $this->_decode($item);
                            $return = array($return->{$item->name}, $d);
    
Ersetzen mit
                            $return->{$item->name} =& $this->_decode($item);
                        }
                    } elseif (isset($return->{$item->name})) {
                        //$isstruct = false;
                        if (count(get_object_vars($return)) == 1) {
		       $isstruct = false;
                            $d =& $this->_decode($item);
                            $return = array($return->{$item->name}, $d);
    

Beispiel eines php-Clients. Dieses Script ruft die Daten des Spiels mit der ID '625' ab:

<?php
$options 
= array('encoding'           => 'UTF-8',
                 
'connection_timeout' => 5,
                 
'exceptions'         => 1,
                 );

$location 'http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL';

try
{
    
$client = new SoapClient($location$options);
    
$params = new stdClass;
    
$params->MatchID 626;
    
$response $client->GetMatchByMatchID($params);
}
catch (
SoapFault $e)
{
    die(
$e->faultcode ': ' $e->faultstring);
}
catch (
Exception $e)
{
    die(
$e->getCode() . ': ' $e->getMessage());
}

print_r($response->GetMatchByMatchIDResult);

Hier einige Zeilen darüber, wie man mittels Groovy auf der Java-Plattform auf die Daten zugreift:

Groovy ermöglicht eine einfache Nutzung von SOAP-basierten WebServices. Benötigt wird nur GroovyWS. Am einfachsten ist es für Experimente, wenn man das JAR-Archiv, welches alle Abhängigkeiten enthält, direkt nach ~/.groovy/lib kopiert. Damit ist es üblicherweise automatisch im Classpath enthalten.

Exemplarisch sei hier der Zugriff auf das Spiel mit der MatchID 1103 gezeigt:

import groovyx.net.ws.WSClient
def openLigaDB = new WSClient("http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL", this.class.classLoader)
def match = openLigaDB.GetMatchByMatchID(1103)
println "Spiel ${match.matchID} wurde zwischen ${match.nameTeam1} und ${match.nameTeam2} gespielt."

zur Verfügung gestellt von Nils Kassube, www.newscope.com

Zugriff auf den OpenLigaDB-Webservice per VBA, in diesem Fall in einem Excel-Makro

Zugriff auf den OpenLigaDB-Webservice per VBA, in diesem Fall in einem Excel-Makro