Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
SOAP über Socket versenden/empfangen
spacer
Autor Nachricht
KGriess
Hält's aus hier

Beiträge: 4
Dabei seit: 04.03.2010



BeitragVerfasst: Mi 10.03.10 00:38  Antworten mit Zitat Beitrag melden
Moin,

ich würde gern die XML-Daten eines SOAP-Requests/-Response per Socket-Verbindung übertragen. Die WSDL-Import-Unit habe ich. Was ich nun brauche ist eine Möglichkeit aus einer SOAP-Klasse das XML-Objekt zu extrahieren um dessen Inhalt (XML_Dokument.XML.Text) per Socket zu versenden.

In den SOAP-Units habe ich hierzu die Funktionen ObjectToSOAP(...) und SOAPToObject(...) gefunden. Bei den beiden Aufrufen kommt ein Interface vom Typ IObjConverter zum Einsatz und hier komme ich nicht weiter wo bekomme ich das her?

Weiß jemand von Euch einen Beispiel-Source oder eine andere Möglichkeit


Vielen Dank schon mal vorweg,
KGriess
Private Nachricht sendenPosting in privater Nachricht zitieren
KGriess
Hält's aus hier

(Threadstarter)

Beiträge: 4
Dabei seit: 04.03.2010



BeitragVerfasst: Fr 12.03.10 15:48  Antworten mit Zitat Beitrag melden
Hallo Zusammen,

hab die Lösung gefunden. Ich beschränke mich mal auf das OnClientRead Events des ServerSockets:

ausblenden volle Höhe Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
// Meldung vom Client empfangen
procedure TForm1.OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
s: String;
HttpRio: THTTPRIO;
service: TMeinSoapServiceObject; //Aus dem Importiert WSDL-File
request: TMeinSoapRequestObjekt; //Aus dem Importiert WSDL-File
response: TMeinSoapResponseObject; //Aus dem Importiert WSDL-File
ResponseName: String;
XmlDocument: TXMLDocument;
RootNode: IXMLNode;
ResponseNode: IXMLNode;
RequestNode: IXMLNode;
RefID: WideString;
begin
s := Socket.ReceiveText;

HttpRio := THTTPRIO.Create(Self);
service := Get_TMeinSoapServiceObject(false, '', HttpRio);
XmlDocument := TXmlDocument.Create(Self);

// Hier wird die SOAP-Anfrage ausgewertet
try
XmlDocument.XML.Text := s;
XmlDocument.Active := true;
RootNode := XmlDocument.ChildNodes[0];
RequestNode := XmlDocument.DocumentElement;

// Leeres SOAP-Objekt erzeugen
request := TMeinSoapRequestObjekt.Create;

// Hier wird aus der SOAP-Abfrage heraus das Objekt erzeugt
request.SOAPToObject(RootNode, RequestNode, HttpRio.Converter);
finally
FreeAndNil(XmlDocument);
end;


//...


// XML-Dokument vorbereiten in das die SOAP-Antwort eingetragen wird
XmlDocument := TXmlDocument.Create(Self);
ResponseName := TMeinSoapResponseName'; //Name des SoapObjekts aus dem WSDL-File

// Hier wird die Antwort erzeugt
try
XmlDocument.Active := true;
RootNode := XmlDocument.AddChild(ResponseName);
response := TMeinSoapResponseObject.Create;
response.Property1 := '
Prop 1';
response.Property2 := '
Prop 2';
response.Property3 := '
Prop 3';

// Hier wird über das Objekt die Soap-Abfrage generiert
ResponseNode := response.ObjectToSOAP(
RootNode,
RootNode,
HttpRio.Converter,
ResponseName,
'
URI', // Soap-Namespace
[], // Converter-Optionen
RefID
);

//Antworten
Socket.SendText(ResponseNode.XML);
Socket.Write(0);
finally
//HttpRio.Free;
FreeAndNil(XmlDocument);
end;
end;
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home