AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi: SOAP zwischen 2 Rechnern
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi: SOAP zwischen 2 Rechnern

Ein Thema von derseitzer · begonnen am 24. Nov 2016 · letzter Beitrag vom 5. Dez 2016
Antwort Antwort
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 09:26
Hallo,

wenn du die Beispielsourcen zu der Anleitung runter lädst, findest du in der Unit "unitIMyService.pas" die Methode GetIMyService. Darin siehst du, dass bei der Adresse immer auf "Localhost" mit Port 8080 zugegriffen wird.

Diesen Teil solltest du anpassen. Eine Möglichkeit ist es z.B. die "GetIMyService" per overload die Parameter "IPAdress: string; Port: Word" mit zu geben. Dadurch kannst du dich dann auf jeden PC mit diesem Service verbinden.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 09:59
das hier wäre ja die Funktion:
function GetIMyService(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): IMyService;
heißt ich müsst (system.false;192.168.x.y; nil) übergeben oder?:/

Und wenn das funktionieren würde, den server und client auf einem rechner laufen zu lassen und mich mit einem zweiten Rechner mit der oben genannten Funktion zu verbinden, dann hab ich ja trotzdem noch keine Möglichkeit einzusehen, was Rechner 1 geschickt hat oder doch?
Tut mir leid, dass ich mich mit dem ganzen einfach 0 auskenne...
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 10:48
das hier wäre ja die Funktion:
function GetIMyService(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): IMyService;
heißt ich müsst (system.false;192.168.x.y; nil) übergeben oder?:/
Ja, dass stimmt fast. Du kannst die Funktion verwenden wie sie ist, dann musst ud aber bei Addr -> "http://192.168.x.y:8080/wsdl/IMyService" übergeben (Vorausgesetzt: Du willst wsdl & der Port ist 8080.

Ich dachte mehr an sowas:
Delphi-Quellcode:
const
  defWSDL = 'http://%s:%d/wsdl/IMyService';
  defURL = 'http://%s:%d/soap/IMyService';
  defSvc = 'IMyServiceservice';
  defPrt = 'IMyServicePort';

function GetFullAdress(UseWSDL: Boolean; IPAdress: string; Port: Word): string;
begin
  if UseWSDL then result := defWSDL
             else result := defURL;
  result := Format(result, [IPAdress, Port]);
end;

function GetIMyService(UseWSDL: Boolean; IPAdress: string; Port: Word; HTTPRIO: THTTPRIO): IMyService;
begin
  result := GetIMyService(UseWSDL, GetFullAdress(UseWSDL, IPAdress, Port), HTTPRIO);
end;

function GetIMyService(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IMyService;
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    Addr := GetFullAdress(UseWSDL, 'localhost', 8080);
    //if UseWSDL then
    // Addr := defWSDL
    //else
    // Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as IMyService);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;
Und wenn das funktionieren würde, den server und client auf einem rechner laufen zu lassen und mich mit einem zweiten Rechner mit der oben genannten Funktion zu verbinden, dann hab ich ja trotzdem noch keine Möglichkeit einzusehen, was Rechner 1 geschickt hat oder doch?
Das hängt vom Server ab. Du könntest entsprechende Funktionen etc. ja dort implementieren für die Clients.
Aber evtl. solltest du dein Problem nochmals etwas genauer beschreiben - also was möchtest du wirklich umsetzen?

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 11:12
Mit diesem Code hier vom Client versuche ich mich ja zum Server zu connecten:
procedure TForm2.Button1Click(Sender: TObject);
var
Service: IMyService;
ReqEmployee: TMyEmployee;
ResEmployee: TMyEmployee;
begin
// capture interface to service
Service := unitIMyService.GetIMyService(system.False,'http://192.168.0.1:8080/wsdl/IMyService',nil); // hier die ip vom rechner mit server eingetragen
// build the request
ReqEmployee := TMyEmployee.Create;
try
ReqEmployee.FirstName := edtReqFirstName.Text;
ReqEmployee.LastName := edtReqLastName.Text;
ReqEmployee.Salary := Trunc(spedReqSalary.Value);
// Make the service request
ResEmployee := Service.echoMyEmployee(ReqEmployee);
try
// Display the response
edtResFirstName.Text := ResEmployee.FirstName;
edtResLastName.Text := ResEmployee.LastName;
spedResSalary.Value := Trunc(ResEmployee.Salary);
finally
ResEmployee.Free;
end;
finally
ReqEmployee.Free;
end;
end;


Nun kommt eine andere Fehlermeldung:
Dokumentelement
http//: schemas.xmlsoap.org/soap/envelope/Envelope erwartet, http//:schemas.xmlsoap.org/wsdl/:definitions gefunden
also ich bin schonmal froh das sich die fehlermeldung geändert hat.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 11:17
Service := unitIMyService.GetIMyService(system.False,'http://192.168.0.1:8080/wsdl/IMyService',nil); // hier die ip vom rechner mit server eingetragen ...
http//: schemas.xmlsoap.org/soap/envelope/Envelope erwartet, http//:schemas.xmlsoap.org/wsdl/:definitions gefunden
Du übergibst eine WSDL-Adresse und forderst im ersten Parameter der METHODE SOAP. Das sagt die Fehlermeldung. Entscheide Dich

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 11:30
Also erstmal 1000Dank Chris , gibt es einen Unterschied welches ich verwenden soll oder sind das einfach nur 2 verschiedene Pfadmöglichkeiten
also funktionieren tut es jetzt.. super dann werde ich jetzt probieren eine Funktion zu schreiben mit der ich vom einen auf den anderen PC Client schreiben kann
werde mich sicherlich nochmal melden, weil des werde ich sicherlich au nicht sofort hinbekommen aber danke erstmal
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: Delphi: SOAP zwischen 2 Rechnern

  Alt 24. Nov 2016, 11:49
Ok wenn ich nun einen zweiten Rechner habe von dem ich die Information vom 1. Rechner bekommen möchte, muss ich ja nun eine neue Funktion schreiben.
und zwar in Rechner 1 und 2 richtig? speichert mein Server die Information irgendwo ab, wenn ich ein Echo mache vom Rechner 1 aus?..ich glaube nicht..
heißt das nun ich sollte auf Rechner 2 einen Timer stellen der alle paar Millisekunden schaut ob eine Information angekommt?
Bestimmt nicht, der Server muss doch die Information die Rechner1 schickt irgendwo speichern
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:51 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