<?phpfunction print_a( $TheArray ) { echo "
<table border=\"0\">\n"; $Keys = array_keys( $TheArray ); foreach( $Keys as $OneKey ) { echo "<tr>\n"; echo "<td bgcolor=\"#727450\" valign=\"top\">"; echo "<b>$OneKey</b>"; echo "</td>\n"; echo "<td bgcolor=\"#C4C2A6\" valign=\"top\">"; if ( is_array($TheArray[$OneKey]) ) print_a ($TheArray[$OneKey]); else echo utf8_decode ($TheArray[$OneKey]); echo "</td></tr>"; } echo "</table>\n"; }function setInput($fieldname, $fieldvalue, $fieldtype, $fieldsize = 0) { if (empty($fieldvalue)) { if ($fieldname == 'key') // Hier Google-Key eintragen !! $fieldvalue = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; else $fieldvalue = $_POST[$fieldname]; } if ($fieldname == 'key') $fieldtype = 'password'; if ($fieldsize != 0) $fieldsize = "size=\"$fieldsize\""; echo "
<input type=\"$fieldtype\"", " name=\"$fieldname\"", " value=\"$fieldvalue\" $fieldsize/>"; }$pear_path = "C:\WINNT\system32\inetsrv\pear"; ini_set ("include_path", $pear_path); include ("SOAP/Client.php");
// SOAP-Client erstellen $google = new SOAP_Client("./GoogleSearch.wsdl", TRUE, "GoogleSearchPort");
$wsdl = &$google-
>wsdl; // WSDL $port = $wsdl->currentPortType; // Portecho "
<table border=\"2\"><tr><td valign=\"top\">"; // Durchlaufen aller definierten Methoden des Webservices foreach ($wsdl->portTypes[$port] as $localPort =>$localPortParameters) { echo "<form method=\"post\" action=\"$PHP_SELF\">"; echo "<table>"; echo "<tr><th colspan=\"2\" bgcolor=\"#dddddd\">Dienst: $localPort</th></tr>"; $input = $localPortParameters['input']['message']; // Name der Abfrage $output = $localPortParameters['output']['message']; // Name des Ergebnisses // Versteckte Felder für die Abfrage erzeugen setInput('input', $input, 'hidden'); setInput('output', $output, 'hidden'); foreach ($wsdl->messages[$input] as $parameter =>$xsd) { echo "<tr><td width=\"100\"><b>$parameter:</b></td><td>"; switch ($xsd) { case 'xsd:string': setInput ($parameter, '', 'text', 30); break; case 'xsd:int': setInput ($parameter, '', 'text', 5); break; case 'xsd:boolean': setInput ($parameter, '1', 'checkbox'); break; } echo "</td></tr>"; } echo "<tr><td></td><td><input type=\"submit\" value=\"Suchen\"/>"; echo "</td></tr></table>"; echo "</form>";} echo "
</td><td valign=\"top\">"; // Auswertung des Formulars if ($REQUEST_METHOD == 'POST') { $input = $_POST['input']; $namespace = $wsdl->bindings['GoogleSearchBinding']['operations'][$input]['input']['namespace']; // fill parameters from form foreach ($wsdl->messages[$input] as $parameter =>$xsd) { switch ($xsd) { case 'xsd:string': $value = (empty($_POST[$parameter])) ? '' : (string) $_POST[$parameter]; break; case 'xsd:int': $value = (empty($_POST[$parameter])) ? 0 : (integer) $_POST[$parameter]; break; case 'xsd:boolean': $value = (empty($_POST[$parameter])) ? FALSE : (boolean) $_POST[$parameter]; break; }$parameters[$parameter] = $value; } // SOAP-Envelope an Google senden $result = $google-
>call($input, $parameters, $namespace); if (PEAR::isError($result) || $google->fault) { // Fehler ausgeben $search_result = "PEAR-FEHLER: $result->message<br/>"; $search_result .= "SOAP-FEHLER: $google->faultstring<br>"; } else { // Ergebnisse abholen $output = $_POST['output']; $search_result = "Alle Ergebnisse der Abfrage für Methode<b>$output</b><p/>"; echo "<table>"; // Datentyp der Rückgabe $return_type = $wsdl->messages[$output]['return']; echo $search_result; switch ($return_type) { case 'xsd:base64Binary': $result = base64_decode($result); echo $result; break; case 'xsd:string': $result = (string) $result; echo "<p style=\"background-color:#C4C2A6\">" . $result . "</p>"; break; case 'xsd:boolean': $result = ($result) ? 'JA' : 'NEIN'; echo "<p style=\"background-color:#C4C2A6\">" . $result . "</p>"; break; default: if (is_array($result)) print_a($result); break; } echo "</table>"; } } echo "</td></tr></table>"; ?>
Dieser Text ist der Zeitschriften-Ausgabe 07/2002 von iX entnommen.
Parallelprogrammierung - die Kunst der Multi-Core-Nutzung
Agile ALM - agile Praktiken im Application Lifecycle Management
Webentwicklung - Applikationen für mobile Clients