Einzelnen Beitrag anzeigen

primusio

Registriert seit: 31. Jan 2004
19 Beiträge
 
#1

WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 01:42
Hallo Community,
ich bräuchte einmal eure Hilfe.

Ich möchte auf eine im Internet liegende mySQL Datenbank zugreifen, bzw. die USer meines Programmes. Da ich mySQL allerdings per Benutzerrechte nicht so öffnen möchte, dass man von überall darauf zugreifen kann, erstelle ich mir einen eigenen SOAP Webservice und werde darüber hoffentlich höhere Sicherheit gewähren können.

Das ist abe rnicht mein Problem.

Ich habe folgendes Tutorial durchgearbeitet
http://www.tutorials.de/tutorials166733.html

Habe nun folgende .wsdl Datei
XML-Code:
<?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='TestServer'
  xmlns:tns=' [url]http://localhost/webservice-1/testserver.wsdl[/url] '
  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
  xmlns='http://schemas.xmlsoap.org/wsdl/'>

<message name='addiereAnfrage'>
  <part name='sum1' type='xsd:float'/>
  <part name='sum2' type='xsd:float'/>
</message>
<message name='addiereAntwort'>
  <part name='Result' type='xsd:float'/>
</message>

<portType name='TestServerPortType'>
  <operation name='addiere'>
    <input message='tns:addiereAnfrage'/>
    <output message='tns:addiereAnwort'/>
  </operation>
</portType>

<binding name='TestServerBinding' type='tns:TestServerPortType'>
  <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='addiere'>
    <soap:operation soapAction='urn:xmethodsTestServer#addiere'/>
    <input>
      <soap:body use='encoded' namespace='urn:xmethodsTestServer'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </input>
    <output>
      <soap:body use='encoded' namespace='urn:xmethodsTestServer'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </output>
  </operation>
</binding>

<service name='TestServerService'>
  <port name='TestServerPort' binding='TestServerBinding'>
    <soap:address location='http://localhost/webservice-1/server.php'/>
  </port>
</service>
</definitions>
Wenn ich diese nun in Delphi2005 mit dem WSDL import importiere bekomme ich folgende .pas
Delphi-Quellcode:
unit testserver;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

type
  // ************************************************************************ //
  // ************************************************************************ //
  TestServerPortType = interface(IInvokable)
  ['{1DCF25F4-1B2B-644F-D94A-06D806B14D33}']
    procedure addiere; stdcall;
  end;

implementation

initialization
  InvRegistry.RegisterInterface(TypeInfo(TestServerPortType), '', 'UTF-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(TestServerPortType), '');
end.
Das speichere ich unter testserver.pas ab.

Nun nehme ich mein leeres Projekt und füge "testserver" zu USES hinzu, natürlich liegt testserver.pas im selben Verzeichnis.

Doch wie kann ich nun auf meinen Webservice zugreifen ?
Leider fehlt mir noch die Erfahrung mit Webservices aber ich hoffe ihr könnt mir helfen und ich habe alles wichtige genannt.

Bin für jeden Tipp, Link und jedes Beispielt dankbar.

MfG
Primusio
  Mit Zitat antworten Zitat