** TEIL 1/2 **
Hi,
ich versuche Daten aus einer Datenbank im Internet über einen Webservice in PHP geschrieben anzuzapfen.
Ich habe schon viel gelesen, und versucht aus allen Brocken die immer so von "Experten" ausgegeben werden ein konkretes Beispiel zu machen.
Mein Service funktioniert soweit, dass ich Daten über den Webservice aus dem Internet bekommen, dieser aber in meiner Delphi 2009 Anwendung nicht angezeigt wird.
Entweder ist meine WSDL-Datei fehlerhaft (was auch erklärt warum mir beim Import der WSDL-Datei die Typen nicht korrekt angelegt werden) oder mir fehlt etwas entscheidendes beim Füllen meiner Daten.
Hier mal ein wenig Code
So sieht meine MyWebServiceClass.php aus:
Hier die server_klasse.php:
Hier die dazugehörige WebService.wsdl Datei:
** ENDE TEIL 1/2**
Hi,
ich versuche Daten aus einer Datenbank im Internet über einen Webservice in PHP geschrieben anzuzapfen.
Ich habe schon viel gelesen, und versucht aus allen Brocken die immer so von "Experten" ausgegeben werden ein konkretes Beispiel zu machen.
Mein Service funktioniert soweit, dass ich Daten über den Webservice aus dem Internet bekommen, dieser aber in meiner Delphi 2009 Anwendung nicht angezeigt wird.
Entweder ist meine WSDL-Datei fehlerhaft (was auch erklärt warum mir beim Import der WSDL-Datei die Typen nicht korrekt angelegt werden) oder mir fehlt etwas entscheidendes beim Füllen meiner Daten.
Hier mal ein wenig Code
So sieht meine MyWebServiceClass.php aus:
PHP Code:
<?
class MyWebServiceClass
{
public function sagHallo($begruessung)
{ return 'Hallo ' . $begruessung; }
public function addiere($a, $b)
{ return $a + $b; }
public function LadeBereiche(){
# set these values to match your setup
$g_hostname = "localhost";
$g_db_username = "user";
$g_db_password = "passwort";
$g_database_name = "datenbank";
$g_db_type = "mysql";
$db_link = @mysql_connect ($g_hostname, $g_db_username , $g_db_password);
if ( ! $db_link )
{
die('keine Verbindung zur Zeit möglich - später probieren ');
}
$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die("Auswahl der Datenbank fehlgeschlagen");
$sql = "SELECT * FROM `mantis_project_category_table` ";
// ausführen des mysql-Befehls
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
while($row=mysql_fetch_array($db_erg)) {
$arr[] = $row;
}
//print_r($arr) ;
for($i=0; $i<count($arr); $i++){
for($e=0; $e<count($arr[i]);$e++){
$arr[$i][$e] = utf8_encode( $arr[$i][$e] ) ;
}
}
mysql_free_result($db_erg);
return $arr;
}
}
?>
PHP Code:
<?
require_once('MyWebServiceClass.php');
$options = array('uri' => 'http://soap.prodas.de/test4/');
$SOAPServer = new SoapServer(null, $options);
$SOAPServer->setClass('MyWebServiceClass');
$SOAPServer->handle();
?>
HTML Code:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="MyWebService" targetNamespace="http://soap.prodas.de/test4/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://soap.prodas.de/test4/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <wsdl:schema targetNamespace="http://www.softin.namespace"> <wsdl:complexType name="Result"> <wsdl:sequence> <wsdl:element maxOccurs="1" minOccurs="1" name="product_id" type="xs:int"/> <wsdl:element maxOccurs="1" minOccurs="1" name="category" type="xs:string"/> <wsdl:element maxOccurs="1" minOccurs="1" name="user_id" type="xs:int"/> </wsdl:sequence> </wsdl:complexType> <wsdl:complexType name="ArrayOfResults"> <wsdl:complexContent> <wsdl:restriction base="soapenc:Array"> <wsdl:sequence> <wsdl:element maxOccurs="unbounded" minOccurs="0" name="item" type="softin:Result"/> </wsdl:sequence> <wsdl:attribute ref="soapenc:arrayType" wsdl:arrayType="softin:Result[]"/> </wsdl:restriction> </wsdl:complexContent> </wsdl:complexType> <wsdl:complexType name="Results"> <wsdl:sequence> <wsdl:element name="results" type="softin:ArrayOfResults"/> </wsdl:sequence> </wsdl:complexType> </wsdl:schema> </wsdl:types> <wsdl:message name="sagHalloRequest"> <wsdl:part name="name" type="xsd:string"> </wsdl:part> </wsdl:message> <wsdl:message name="sagHalloResponse"> <wsdl:part name="begruessung" type="xsd:string"> </wsdl:part> </wsdl:message> // LadeBereiche <wsdl:message name="LadeBereicheRequest"> </wsdl:message> <wsdl:message name="LadeBereicheResponse"> <wsdl:part name="Recordlist" type="wsdl:Results"> </wsdl:part> </wsdl:message> <wsdl:portType name="MyWebServicePortType"> <wsdl:operation name="sagHallo"> <wsdl:input message="tns:sagHalloRequest"> </wsdl:input> <wsdl:output message="tns:sagHalloResponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="LadeBereiche"> <wsdl:input message="tns:LadeBereicheRequest"> </wsdl:input> <wsdl:output message="tns:LadeBereicheResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyWebServiceBinding" type="tns:MyWebServicePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sagHallo"> <soap:operation soapAction="http://localhost/ws/sagHallo" /> <wsdl:input> <soap:body use="literal" namespace="http://soap.prodas.de/test4/" /> </wsdl:input> <wsdl:output> <soap:body use="literal" namespace="http://soap.prodas.de/test4/" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="LadeBereiche"> <soap:operation soapAction="http://localhost/ws/sagHallo" /> <wsdl:input> <soap:body use="literal" namespace="http://soap.prodas.de/test4/" /> </wsdl:input> <wsdl:output> <soap:body use="literal" namespace="http://soap.prodas.de/test4/" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyWebService"> <wsdl:port name="MyWebServicePort" binding="tns:MyWebServiceBinding"> <soap:address location="http://soap.prodas.de/test4/server_klasse.php"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
Comment