AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi WSDL import für eigenen SOAP Webservice
Thema durchsuchen
Ansicht
Themen-Optionen

WSDL import für eigenen SOAP Webservice

Ein Thema von primusio · begonnen am 31. Aug 2005 · letzter Beitrag vom 2. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
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
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#2

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 15:51
Basiert zwar auf Delphi 6, aber sollte bei D2K5 ähnlich funktionieren.Infos zu WebServices oder auf english (falls Du Delphi3000-Mitglied bist) Another Using the Borland WebService babelcode
  Mit Zitat antworten Zitat
primusio

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

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 16:28
Erst einmal vielen dank für die Links, jetzt weiß ich in etwa wie es funktionieren SOLLTE.

Allerdings glaube ich das bei dem Import etwas nicht richtig läuft, wenn ich mit die importierte .pas Datei ansehe
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.
sind hier keinerlei Variablen deklariert. Dabei sind 2 Zahlen als Input und eine als Output in der WSDL Datei angegeben.
Aus dem Grund komme ich hier nicht weiter.

Bin für weitere Tipps sehr sehr dankbar und vielleicht bin ich auch nur zu blöd dafür aber irgendwie muss es ja funktionieren, tut es ja auch bei anderen.

MfG
Primusio
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#4

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 18:20
Also, zunächst ist das offensichtlich kein Problem von Delphi 2005. In Delphi 7 bekomme ich dasselbe Ergebnis. Stellt sich die Frage, wo ist die WSDL-Datei her? Ich vermisse z.B. vor message bzw. part die Zeichen wsdl: Edit: Sehe gerade, die müssen nicht unbedingt sein. Kommt mir aber trotzdem recht kurz und unvollständig vor.
2. Edit: Habe mir mal andere WSDL's angeschaut, da stehen " und keine '
  Mit Zitat antworten Zitat
primusio

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

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 18:36
Ich habe mich exakt an das Tutorial gehalten (Link oben), habe die .php Datei exakt übernommen und die .wsdl Datei, wo ich nur etwa 2 Zeilen anpassen muss. Und zwar der Pfad zur .wsdl und zur .php Datei.

Du sagst die .pas Datei sieht so richtig aus ? Also müssen nicht immer die Variablen für die Funktion deklariert werden ?
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 18:39
Ich würde eher sagen, die WSDL-Datei ist verkehrt (siehe mein 2. Edit). Warum erstellst Du keinen WebSevice mit Delphi 2005, dann bekommst Du korrekte WSDL's!
  Mit Zitat antworten Zitat
primusio

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

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 18:55
Nochmal danke das du dir die Zeit für meinen Thread nimmst, hier einmal die neue .wsdl Datei8
XML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
    name="TestServer"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:tns=" [url]http://localhost/webservice-1/testserver.wsdl[/url] "
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd1="nullTestServer.xsd1">
    <wsdl:types> </wsdl:types>
    <wsdl:message name="addiereAntwort">
        <wsdl:part name="Result" type="xsd:float"/>
    </wsdl:message>
    <wsdl:message name="addiereAnfrage">
        <wsdl:part name="sum1" type="xsd:float"/>
        <wsdl:part name="sum2" type="xsd:float"/>
    </wsdl:message>
    <wsdl:portType name="TestServerPortType">
        <wsdl:operation name="addiere">
            <wsdl:input message="tns:addiereAnfrage"/>
            <wsdl:output message="tns:addiereAnwort"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="TestServerBinding" type="tns:TestServerPortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="addiere">
            <soap:operation soapAction="urn:xmethodsTestServer#addiere"/>
            <wsdl:input>
                <soap:body parts="sum1 sum2" use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="TestServerService">
        <wsdl:port binding="wsdl:TestServerBinding" name="TestServerPort">
            <soap:address location="http://localhost/webservice-1/server.php"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
Also jetzt mit " und wsdl davor aber es entsteht die selbe .pas Datei. Vielleicht bin ich auch zu dämlich mit dieser .pas Datei die Verbindung und die Procedure aufzurufen.

Der SOAP Server soll unter PHP laufen, da ich mich mit php weit besser auskenne und er auf jeden Apache mit php5 läuft, kein Problem mit CGI Verzeichnis ... und man kann die Dateien schneller bearbeiten.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8

Re: WSDL import für eigenen SOAP Webservice

  Alt 31. Aug 2005, 22:12
Also ich habe noch nie ein WSDL selbst zusammenbauen müssen, deswegen weiß ich auch nicht, was da unbedingt rein muß. Das hat mir Delphi bzw. ASP.Net immer automatisch zur Laufzeit erstellt! Ich hänge Dir aber mal eine WSDL als Anhang dran, da kannst Du Dir das mal ansehen und mit Deiner vergleichen. Und auch wenn Du PHP besser kannst. Verusche mal mit D2K5 einen Webservice mit genau dieser Funktion zu erstellen und schau Dir mal die dazu generierte(!) WSDL dazu an. Ich komme leider frühestens am Freitag dazu, das mal selbst zu machen.
Angehängte Dateien
Dateityp: txt ttvoranoheservice.wsdl_150.txt (9,4 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#9

Re: WSDL import für eigenen SOAP Webservice

  Alt 1. Sep 2005, 19:39
Hier kommt eine WSDL mit einer Web-Methode Addiere, generiert durch einen mit D2K5 erstellten WebService. Und damit wird auch ein "richtiges" Interface erstellt.
Angehängte Dateien
Dateityp: txt serviceaddiere.wsdl_595.txt (2,2 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
primusio

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

Re: WSDL import für eigenen SOAP Webservice

  Alt 2. Sep 2005, 01:11
Ich bedanke mich nochmal für die Mühe die du dir mit mir gibst.

Ich habe mal deine WSDL Datei importiert und den Pfad zu meinen Script angegeben aber leider weiß ich noch nicht, wie ich nun auf diese Function bzw. den SOAP Service zugreifen kann.
Ich habe die erstellte .pas Datei bei USES hinzugefügt, doch von da an komm eich nicht ganz weiter und der von dir oben gepostete Link hilft mir leider nicht so sehr, da es nach der Anleitung nicht fuktioniert.

Kannst du mir vielleicht kurz sagen welche Kombo und welche Codezeilen ich jetzt noch brauche ?
Wäre wirklich zu gütig von dir.

Danke und MfG
Primusio
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz