test binding error 0x805564
| From: | Bogdan Alexey | Date: | Thu, 12 Jul 2012 11:17:28 +0000 |
| Subject: | test binding error 0x805564 | ||
| Groups: | php.qa | ||
| Request: | Send a blank email to php-qa+get-66660@lists.php.net to get a copy of this message | ||
Just a test with long code
// 2011
<?php
if ($_GET("q")== 'box'){
$min_lon = $_GET["min_lon"];
$min_lon = $_GET["min_lat"];
$min_lon = $_GET["max_lon"];
$min_lon = $_GET["max_lon"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, "http://jallalabor.de");
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_URL, "http://api06.dev.openstreetmap.org/api/0.6/map=bbox=".$min_lon.","</s>.$min_lat.","</s>.$max_lon
.","$max_lat);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true);
$response = curl_exec($ch);
if(curl_getinfo($ch,CURLINFO_HTTP_CODE) == 404){
header("HTTP/1.0 404 Not Found");
return;
}
header ("Content-Type: text/xml");
echo $response;
curl_close($ch);
return;
}
if ($_GET["q"] == 'way'){
if ($_GET["id"]==''){
header("HTTP/1.0 401 BAD REQUEST");
return;
}
$id = $_GET["id"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, "http://martin.rt-labor.it.fh-worms.de");
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_URL, "http://api06.dev.openstreetmap.org/api/0.6/way/".$id."/history");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true);
$response = curl_exec($ch);
if (curl_getinfo($ch,CURLINFO_HTTP_CODE) == 404){
header("HTTP/1.0 404 Not Found");
return;
}
header ("Content-Type: text/xml");
echo $response;
curl_close($ch);
return;
}
}
///////////////////// 2010/2011 ////
// Client
<?php
ini_set ('error_reporting', 'E_ALL & ~E_DEPRECATED');
require_once "SOAP/Client.php";
$sw = new SOAP_Wsdl("http://localhost/aufgabe2-server.php?wsdl");
$sp = $sw->getProxy();
//$parameter = array ("suchmuster" => "%Riesling%");
//$ergebnis = $sc->call ("vollTextSuche", $parameter, "urn:MeinWeinService");
//$parameter = array ("weinid" => 2);
//$ergebnis = $sc->call ("holeNamePreis", $parameter, "urn:MeinWeinService");
$ergebnis = $sp->vollTextSuche("%Riesling%");
if (is_object($ergebnis) && (get_class($ergebnis) == "SOAP_Fault")) {
echo "Fehler! " . $ergebnis->message . "\n";
} else {
//echo $ergebnis["weinname"] . "\n";
foreach($ergebnis as $i){
echo $i["weinid"]."\n";
}
}
?>
//////////////////// 09/10
Restful webservice
$seq = new Sequence ();
$path = $_SERVER("PATH_INFO");
echo $path;
$daten = spliti("/", $path);
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$seq=setzeSequence($daten[1], $POST["xml"]);
}elseif($_SERVER["REQUEST_METHOD"] == "DELETE"){
$seq=loescheSequence($daten[1]);
}elseif($_SERVER["REQUest_METHOD"] == "GET"){
$antwort = $seq->holeSequemce($daten[1]);
foreach($antwort as $mes){
echo $mes->xml ."<br/>";
}
}
Entwickeln Sie einen Kosumenten, der Ihren Web Service nutzt. Der Konsument soll drei Anfragen an
den Web Service stellen:
$curl_get = curl_init();
$curl_post = curl_init();
$curl_delete = curl_init();
$url = "http://localhost/~student/filmservice.php/Name";
$xml = "<psequemceid>0</sequenceid>\r\n <stream>\r\n
<streamid>0</streamid>\r\n <sequenceid>0</sequenceid>\r\n
<inputfile>/content/konfigurator/videos/p1/outl.ts</inputfile>\r\n
<start>0</start>\r\n <length>0</length>\r\n";
curl_setopt ($curl_get, CURLOPT_URL, $url);
curl_setopt ($curl_post, CURLOPT_URL, $url);
curl_setopt (curl_delete, CURLOPT_URL, $url);
curl_setopt ($curl_get,CURLOPT_RETURNTRANSFER,true);
curl_setopt ($curl_post,CURLOPT_RETURNTRANSFER,true);
curl_setopt ($curl_delete,CURLOPT_RETURNTRANSFER,true);
curl_setopt ($curl_get, CURLOPT_HTTPGET, true);
curl_setopt ($curl_post, CURLOPT_POST, true);
curl_setopt ($curl_delete, CURLOPT_DELETE, true);
curlt_setopt ($curl_post, CURLOPT_POSTFIELDS, $xml);
$data_get = curl_exec($curl_get);
$data_post = curl_exec($curl_post);
$data_delete = curl_exec($curl_delete);
curl_close($curl_get);
curl_close($curl_post);
curl_close($curl_delete);
// Entwerfen Sie einen Konsumenten, der den oben genannten Web Service konsumiert.
<?php
require_once "SOAP/Client.php";
$ws = new SOAP_WSDL("DIE URL");
$proxy = $ws->getProxy();
$startCity = "Leichlingen";
$endCity = "Worms";
$antwort = $proxy->findRoute($startCity, $endCity);
if (get_class($antwort) == "SOAP_Fault"){
echo "Fehlermeldung";
}else{
echo $antwort["route"];
}
===========================================================
WSDL
===========================================================
WDSL-Server:
<?php
// ab php5.3 deprecated Warnings abschalten
ini_set ('error_reporting', E_ALL & ~E_DEPRECATED);
// PEAR::SOAP einbinden
require_once "SOAP/Server.php";
$skiptrace =& PEAR::getStaticProperty(
'PEAR_Error', 'skiptrace');
$skiptrace = true;
// Service-Klasse programmieren
class MeinZeitService {
// __dispatch_map definiren
public $__dispatch_map = array ();
// Ein- und Ausgabeparameter in
// __dispatch_map definieren
public function __construct() {
$this->__dispatch_map["jetzt"] =
array ("in" =>
array("format" => "string"),
"out" =>
array("uhrzeit" => "string"));
}
// In Methode __dispatch
//__dispatch_map zurück geben
public function __dispatch($methodname) {
if (isset(
$this->__dispatch_map[$methodname]))
return
$this->__dispatch_map[$methodname];
return NULL;
}
// Service Methode mit Parametern
function jetzt ($format) {
// Ist das Format fehlerhaft?
if (($format == null)||
(trim($format) == "")) {
// Fehlermeldung zurückgeben
return new SOAP_Fault("Kein Parameter angegeben",
"0815", "Client");
}
date_default_timezone_set('Europe/Berlin');
$uhrzeit = date ($format);
// Rückgabe als SOAP_Value Objekt
return (new SOAP_Value('uhrzeit',
'string', $uhrzeit));
}
}
// Web-Service Klasse ausprägen
$service = new MeinZeitService();
// Server ausprägen
$ss = new SOAP_Server();
// Service mit Namen zuweisen
$ss->addObjectMap ($service,
"urn:MeinZeitService");
// Service Starten oder WSDL ausgeben?
if (isset($_SERVER["REQUEST_METHOD"])&&
$_SERVER["REQUEST_METHOD"] == "POST") {
// Einstellung, dass POST-Daten an den
// Service weiter gegeben werden
$ss->service ($HTTP_RAW_POST_DATA);
} else {
// Prüfen, dass wsdl als Parameter
if (isset($_SERVER['QUERY_STRING']) &&
strcasecmp($_SERVER['QUERY_STRING'],
'wsdl') == 0) {
// DISCO_Server zum Erzeugen des WSDL
// auspraegen
require_once "SOAP/Disco.php";
$disco = new SOAP_DISCO_Server ($ss,
"MeinZeitService",
"Mein Zeit Service");
// HTML-Header setzen
header("Content-type: text/xml");
// WSDL-Dokument ausgeben
print $disco->getWSDL ();
}
}
?>
###########################################################
WSDL-Client
<?php
// ab php5.3 deprecated Warnings abschalten
ini_set ('error_reporting', E_ALL & ~E_DEPRECATED);
require_once "SOAP/Client.php";
// SOAP ueber WSDL auspraegen
$sw = new SOAP_WSDL ("http://localhost/cswa/ws/wsdlserver.php?wsdl");
// Proxy-Objekt ermitteln
$proxy = $sw->getProxy ();
// Web Service Methode aufrufen
$ergebnis = $proxy->jetzt ("H:i:s");
// Ergebnis ausgeben
print $ergebnis."\n";
?>
===========================================================
SOAP-Fault
===========================================================
SOAP-Server:
<?php
// ab php5.3 deprecated Warnings abschalten
ini_set ('error_reporting', E_ALL & ~E_DEPRECATED);
// PEAR::SOAP einbinden
require_once "SOAP/Server.php";
$skiptrace =& PEAR::getStaticProperty(
'PEAR_Error', 'skiptrace');
$skiptrace = true;
// Service-Klasse programmieren
class MeinZeitService {
// __dispatch_map definiren
public $__dispatch_map = array ();
// Ein- und Ausgabeparameter in
// __dispatch_map definieren
public function __construct() {
$this->__dispatch_map["jetzt"] =
array ("in" =>
array("format" => "string"),
"out" =>
array("uhrzeit" => "string"));
}
// In Methode __dispatch
//__dispatch_map zurück geben
public function __dispatch($methodname) {
if (isset(
$this->__dispatch_map[$methodname]))
return
$this->__dispatch_map[$methodname];
return NULL;
}
// Service Methode mit Parametern
function jetzt ($format) {
// Ist das Format fehlerhaft?
if (($format == null)||
(trim($format) == "")) {
// Fehlermeldung zurückgeben
return new SOAP_Fault("Kein Parameter angegeben",
"0815", "Client");
}
date_default_timezone_set('Europe/Berlin');
$uhrzeit = date ($format);
// Rückgabe als SOAP_Value Objekt
return (new SOAP_Value('uhrzeit',
'string', $uhrzeit));
}
}
// Web-Service Klasse ausprägen
$service = new MeinZeitService();
// Server ausprägen
$ss = new SOAP_Server();
// Service mit Namen zuweisen
$ss->addObjectMap ($service,
"urn:MeinZeitService");
// Einstellung, dass POST-Daten an den
// Service weiter gegeben werden
$ss->service ($HTTP_RAW_POST_DATA);
?>
###########################################################
Soap-Client
<?php
// ab php5.3 deprecated Warnings abschalten
ini_set ('error_reporting', E_ALL & ~E_DEPRECATED);
// Einbinden von SOAP/Client.php
require_once "SOAP/Client.php";
// Client ausprägen und URI auf Web Service
// übergeben
$sc = new SOAP_Client
("http://localhost/cswa/ws/soapserver-fault.php");
// Parameter für Web Service Methode
//$parameter = array ("format" => "H:i:s");
$parameter = array ("format" => null);
// Methode call aufrufen, um Web Service
// Methode zu nutzen
$ergebnis = $sc->call ("jetzt", $parameter,
"urn:MeinZeitService");
// Auf Fehler prüfen
if (is_object($ergebnis)&&
(get_class($ergebnis) == "SOAP_Fault")) {
// Fehlermeldung ausgeben
print "Fehler! ".$ergebnis->message."\n";
} else {
// Ergebnis ausgeben
print $ergebnis."\n";
}
?>
===========================================================
Rest
===========================================================
Server:
<?php
// Wenn GET Methode
if($_SERVER['REQUEST_METHOD'] == 'GET'){
// Pfad zerlegen, 1 Element ist b_id
$path = $_SERVER['PATH_INFO'];
if($path != null){
$path_params = explode("/", $path);
}
echo "Daten von Buch ".$path_params[1];
return;
}
// Wenn POST Methode
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// POST-Body holen
$body = file_get_contents("php://input");
// Status setzen
header("HTTP/1.0 201 Created");
echo "Daten von neuem Buch: ".$body;
return;
}
// Status setzen
header("HTTP/1.0 501 Not Implemented");
?>
###########################################################
Client
<?php
$url = "http://localhost/cswa/rest/book.php";
// curl initialisieren
$ch = curl_init();
// Optionen fuer GET setzen
curl_setopt($ch, CURLOPT_URL, $url."/42");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true);
// Anfrage ausfuehren
$response = curl_exec($ch);
echo "---- GET ----\nStatus-Code: ". curl_getinfo($ch,
CURLINFO_HTTP_CODE)."\n";
echo $response."\n----\n";
curl_close($ch);
// curl initialisieren
$ch = curl_init();
// Optionen fuer POST setzen
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
// Bost-Body setzen
$data = "Buch 0815";
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// Anfrage ausfuehren
$response = curl_exec($ch);
echo "---- POST ----\nStatus-Code: ". curl_getinfo($ch,
CURLINFO_HTTP_CODE)."\n";
echo $response."\n----\n";
curl_close($ch);
// curl initialisieren
$ch = curl_init();
// Optionen fuer DELETE
curl_setopt($ch, CURLOPT_URL, $url."/42");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
// Anfrage ausfuehren
$response = curl_exec($ch);
echo "---- DELETE ----\nStatus-Code: ". curl_getinfo($ch,
CURLINFO_HTTP_CODE)."\n";
echo $response."\n----\n";
curl_close($ch);
?>