Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webservice Einstellungswerte übergeben (https://www.delphipraxis.net/58377-webservice-einstellungswerte-uebergeben.html)

etom291272 6. Dez 2005 10:21


Webservice Einstellungswerte übergeben
 
:gruebel: Hallo zusammen

ich schreibe gerade eine dll, die über einen webservice bestimmte daten aus einer adressdatenbank
von einem linuxserver abruft. Dieser Linuxserver ist von der dll aus nicht über internet sondern über lan erreichbar.

die dll soll jetzt bei x kundschaften eingesetzt werden. beim wsdl import generiert delphi ja eine unit wo alles drin ist was man braucht. Mir geht es um volgende Funktion
Delphi-Quellcode:
function GetoefkPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): oefkPortType;
{const
  defWSDL = 'Z:\!Desktop\WebserviceClient\Klass\doku\WSDL\oefk.wsdl';
  defURL = 'http://www.sla.de/oefksoap';
  defSvc = 'oefk';
  defPrt = 'oefk';}
var
  RIO: THTTPRIO;
  defWSDL, defURL, defSvc, defPrt:String;

begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as oefkPortType);
    if UseWSDL then
diese funktion liefert mir ein variable mit der schnittstelle über die ich dann meine operationen abwickle.
:?: wenn die unit von delphi erstellt wird sind sie Felder defWSDL, defURL, defSvc, defPrt alles Konstanten. Diese werden aber je kunde unterschiedlich sein darum müssen sie aus einer anderen software heraus in meine dll übergeben werden.
:?: wie bekomme ich jetzt richtig die werte in diese funktion
kann ich die deklaration der funktion GetoefkPortType einfach ändern und einen eigenen record übergeben
oder sollte ich einen unit zirkelverweis (Hauptunit der dll verwendet ja die webservice unit und webservice unit verwendet dann hauptunit) herstellen.

mir wäre es am liebsten wenn ich die funktion erweitern könnte.

Danke für eure Antworten :coder:

etom291272 7. Dez 2005 09:16

Re: Webservice Einstellungswerte übergeben
 
:!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!:
sorry das ich schon wieder pushen muss aber die antwort ist wichtig für mich da ich diese dll diese woche ausliefern muss.

Kann ich die Funktion
Delphi-Quellcode:
function GetoefkPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): oefkPortType;
einfach um einen record erweitern der dann die daten für die kommunikation mit dem webservice enthält
:?: :wiejetzt:

:oops: sorry nicht ganz 24h :mrgreen:

etom291272 8. Dez 2005 10:45

Re: Webservice Einstellungswerte übergeben
 
:? habs jetzt folgendermassen gelöst.
Delphi-Quellcode:
type

  TKommEinstWebs = record
    URL, Svc, Prt:String;
  end;
...

with aKommEinst do
  begin
    URL:=parURL;
    Svc:=parSvc;
    Prt:=parPrt;
  end;

  oefk:=GetoefkPortType(aKommEinst, False);
...

function GetoefkPortType(pKommEinst:TKommEinstWebs; UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): oefkPortType;
{const
  defWSDL = 'Z:\!Desktop\WebserviceClient\Klass\doku\WSDL\oefk.wsdl';
  defURL = 'http://www.sla.de/oefksoap';
  defSvc = 'oefk';
  defPrt = 'oefk';}
var
  RIO: THTTPRIO;
  defWSDL, defURL, defSvc, defPrt:String;

begin
  with pKommEinst do
  begin
    defURL:=URL;
    defSvc:=Svc;
    defPrt:=Prt;
  end;
Können mit dieser Lösung Probleme auftauchen :?: :?: :?:

etom291272 9. Dez 2005 09:55

Re: Webservice Einstellungswerte übergeben
 
einmal versuchs ich noch :mrgreen: :mrgreen: :mrgreen:

Highway 9. Dez 2005 10:52

Re: Webservice Einstellungswerte übergeben
 
Hallo,

der Fehler besteht darin, das du den Webservice über das Filesystem ansprichst.

Dein Webservice auf der Linux-Maschine ist doch auch via http erreichbar.

Beispiel:

Du hast einen Apache-Server auf deiner lokalen Maschine aufgesetzt. Dann kannst du den Server über
Delphi-Quellcode:
[url]http://localhost/ServiceName?wsdl[/url]
[url]http://127.0.0.1/ServiceName?wsdl[/url]
[url]http://ServerUrl/ServiceName?wsdl[/url]
erreichen.

Wenn du die WSDL dann von dieser http Adresse importierst, die sollte ja für jeden User die gleiche sein, dann erreichst du den Service von allen Rechnern über die gleiche http-Adresse erreichbar sein.

Alternativ kannst du diese http-Adresse auch als Parameter an die Procedure übergeben.

Beispiel:

Delphi-Quellcode:
Service := GetoefkPortType(false,'http://localhost/Webservice?wsdl');
Service := GetoefkPortType(false,'http://127.0.0.1/Webservice?wsdl');
Service := GetoefkPortType(false,'http://ServerUrl/Webservice?wsdl');
Hoffe es hilft weiter.

Grüße,

Highway

etom291272 9. Dez 2005 12:27

Re: Webservice Einstellungswerte übergeben
 
:hi: erstmal danke für deinen post.

Zitat:

Hallo,
der Fehler besteht darin, das du den Webservice über das Filesystem ansprichst.
warum spreche ich den webservice über filesystem an der parameter uses wsdl ist doch auf false somit ist die wsdl datei nur relevant beim ersten erstellen der unit (oefk.pas die den gesamten webservice implementiert) danach ist die wsdl eigentlich gar nicht mehr involviert.
Der Zugriff auf den webservice erfolgte über 'http://www.sla.de/oefksoap' (und beim Kunden anschl. über die locale ip des Servers im Lan) also müsste er imho über web und nicht über filesystem gehen.

Sollte ich mit dieser Annahme gröber im dunkeln tappen bitte um aufklärung

Highway 9. Dez 2005 19:22

Re: Webservice Einstellungswerte übergeben
 
Hast vollkommen recht!

Ich habe mich durch den Verweis auf Laufwerk Z irritieren lassen.

Grüße,

Highway


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz