Ich habe jetzt folgenden Code in eine onButtonClick-Procedure geschrieben:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
muhrio:THTTPRio;
muhrr:THTTPReqResp;
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
ms.LoadFromFile('
H:\Archiv\Src\blub.doc');
muhrio:=THTTPRio.Create(
nil);
muhrio.wsdllocation:='
C:\Users\tmsschac\Desktop\ITestService.wsdl';
muhrr:=THTTPReqResp.Create(
nil);
muhrio.HTTPWebNode:=muhrr;
muhrr.URL:='
http://localhost:8081/Project1.MyClass';
// muhrr.UserName:='';
// muhrr.Password:='';
muhrr.Connect(true);
muhrr.Send(ms);
// muhrr.receive(int, stream, boolean);
muhrr.Connect(false);
end;
Die auskommentierten Zeilen sind dabei z.z. noch nicht relevant.
Das ReqResp-Objekt bietet die Möglichkeit, Streams zu senden. Der Sinn ist glaube ich, dass man Username und Password und nen Request sendet, damit man sich einloggen und die vom Server bereitgestellten Funktionen benutzen kann und der Server schickt dann ein Response.
Ich will hingegen eine Datei in dem Stream schicken, die der Server dann irgendwo abspeichern soll. Ich habe bisher leider keine andere Möglichkeit gefunden, überhaupt einen Stream zum Server zu schicken, daher versuche ich das nun auf diese Weise in der Hoffnung, dass es möglich ist.
Wenn ich auf den Button drauf klicke, läuft er den code auch durch, ohne einen Fehler zu bringen, d.h. mein Stream mit der Datei drin kommt beim Server an. Nun meine Frage dazu: Wo kommt der Stream an? ^^
Ich weiß, dass ich auf dem Server Funktionen, Prozeduren, Klassen etc definieren kann, die dem Client dann über die
WSDL-Datei zur Verfügung gestellt werden. Aber ich habe keine Ahnung, wo genau mein Stream ankommt und ich eine Prozedur schreiben kann, die diesen dann verarbeitet. Ich hoffe, dass das nicht irgendwo automatisch passiert und ich keine Möglichkeit habe, dieses Vorgehen zu verändern...
P.S.:
Ich weiß, dass dies ein sehr spezielles Themengebiet ist, ich habe auch schon viele Threads gefunden, wo niemals jemand geantwortet hat, aber kennt sich nicht doch der ein oder andere zumindest ein klein wenig aus? Pseudo-Wissen oder Vermutungen sind immernoch besser als gar keine Idee...
edit:
Ich habe es jetzt mal ganz trivial versucht, indem ich eine function geschrieben habe, die als übergabeparameter einen TMemoryStream hat. In diesen Stream lad ich ich die Datei rein und wollt sie auf der Serverseite wieder als Datei speichern.
Beim Import der
wsdl meckert er aber rum:
Fehlender <definition>-Knoten von Namespace "http://schemas.xmlsoap.org/
wsdl/"
Hat irgendwer irgendne Idee?
Ich nehme an, er kennt kein TMemoryStream. Ich hab aber bei Uses Classes angegeben, da is TMemoryStream ja drin... Kennt
XML evtl kein TMemoryStream? Mit
XML kenn ich mich ncih so gut aus...