![]() |
Delphi: SOAP zwischen 2 Rechnern
Guten Tag,
Ich habe einen SOAP-Service ganz nach dieser Anleitung programmiert: ![]() Es klappt alles wie beschrieben. Nun möchte ich aber das, was ich als Request auf der linken Seite eingebe, auf einem zweiten PC abrufen. Hat jemand eine Idee oder schonmal was damit gemacht? Gedanke: ich packe irgendwie nur den "Information holen"-Teil in einen neuen Button, spiele das Programm auf beide Rechner, drücke bei einem "ECHO" und beim anderen auf den neuen "Information holen"-Button und die Information ist auf dem zweiten Rechner. Problem: Es wird alles mit "Echo"-Funktionen beschrieben und ich will ja eigentlich kein Echo sondern ich will die Information auf den anderen Recner bekommen. Vielen Dank für jegliche Hilfe |
AW: Delphi: SOAP zwischen 2 Rechnern
Ich verstehe nicht genau was du meinst:
Du hast Client.exe und Server.exe. Ein Rechner ist Server, da läuft Server.exe. Ein oder mehrere Rechner sind Clients, mit Client.exe. Der Client muss natürlich die IP-Adresse zum Server angeben damit das läuft. Ein oder mehrere Clients können mit dem einen Server kommunizieren, oder willst du mit 2 Servern kommunizieren ? Wenn ja, warum ? Rollo |
AW: Delphi: SOAP zwischen 2 Rechnern
Rollo erstmal danke für deine Hilfe:)
Wenn ich zwischen zwei Rechnern eine Kommunikation aufbauen will, kann ich doch auf einem der Rechner gleichzeitig den Server laufen lassen richtig? Muss ich dann meine Ip-Adressen auf meinen Rechnern ändern? im Delphi Programm wird sie ja nirgends erwähnt. |
AW: Delphi: SOAP zwischen 2 Rechnern
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 |
AW: Delphi: SOAP zwischen 2 Rechnern
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... |
AW: Delphi: SOAP zwischen 2 Rechnern
Zitat:
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; Zitat:
Aber evtl. solltest du dein Problem nochmals etwas genauer beschreiben - also was möchtest du wirklich umsetzen? Gruß, Chris |
AW: Delphi: SOAP zwischen 2 Rechnern
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 :shock: also ich bin schonmal froh das sich die fehlermeldung geändert hat. :D |
AW: Delphi: SOAP zwischen 2 Rechnern
Zitat:
Gruß, Chris |
AW: Delphi: SOAP zwischen 2 Rechnern
Also erstmal 1000Dank Chris :-D , 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 :lol: aber danke erstmal :-D |
AW: Delphi: SOAP zwischen 2 Rechnern
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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 by Thomas Breitkreuz