Autor Beitrag
Chaosworld
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Mi 11.06.08 15:51 
Hallo,
ich möchte Daten an einen Server schicken über SOAP/XML. Nach mehren Versuchen bin im am Ende bei MsXML gelandet.

Ein Beispielanfrage, wie mir von der Firma zugeschickt wurde, soll so aussehen:

ausblenden volle Höhe XML-Daten
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:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lab="http://lab.services.rewe.de" xmlns:bean="http://beans.lab.services.rewe.de">
   <soapenv:Header/>
   <soapenv:Body>
      <lab:findListRIS_QSLabTasks>
         <lab:institut>
            <bean:name>xxxxxxxxx</bean:name>
            <bean:number>xxxxxxxxxx</bean:number>
            <bean:password>xxxxxxxxxx</bean:password>
         </lab:institut>
         <lab:criterias>
            <!--1 or more repetitions:-->
            <bean:criteriaElement>
               <bean:dataSourceName>BusRel</bean:dataSourceName>
               <bean:fieldName>AVA_SAPAccountNum</bean:fieldName>
               <bean:operator>Equal</bean:operator>
               <bean:value1>xxxxxxxxxx</bean:value1>
               <bean:value2></bean:value2>
            </bean:criteriaElement>
            <bean:criteriaElement>
               <bean:dataSourceName>Task</bean:dataSourceName>
               <bean:fieldName>RIS_QSTaskClosed</bean:fieldName>
               <bean:operator>Equal</bean:operator>
               <bean:value1>No</bean:value1>
               <bean:value2></bean:value2>
            </bean:criteriaElement>
            <bean:criteriaElement>
               <bean:dataSourceName>Task</bean:dataSourceName>
               <bean:fieldName>TaskType</bean:fieldName>
               <bean:operator>Equal</bean:operator>
               <bean:value1>None</bean:value1>
               <bean:value2></bean:value2>
            </bean:criteriaElement>
         </lab:criterias>
      </lab:findListRIS_QSLabTasks>
   </soapenv:Body>
</soapenv:Envelope>


Mein aktueller Test-Script sieht so aus:

ausblenden Delphi-Quelltext
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:
var
   req : IXMLHTTPRequest;
   anfrage: OleVariant;
   RequestStrm: TStream;
begin
   MemoHeaders.Clear;
   MemoData.Clear;

   req := CoXMLHTTP.Create;  // Interface erzeugen
   // in EdtURL steht die URL, die heruntergeladen werden soll
   req.open('POST', EdtURL.Text, False, {Username} EmptyParam, {Passwort} EmptyParam);

   // eigenen Request-Header setzen
   req.setRequestHeader('LimsU''Test V1.0');
   req.setRequestHeader('name''user');
   req.setRequestHeader('nummer''usernummer');
   req.setRequestHeader('password''password');

   req.send(EmptyParam);  // Anfrage an Server senden und Antwort abwarten

   // Header anzeigen
   MemoHeaders.Lines.Text := req.getAllResponseHeaders;
   // Nutzdaten anzeigen
   MemoData.Lines.Text := req.responseText;

   // Status anzeigen
   Caption.lines.Text := req.statusText;


mein Problem ist einfach, mir ist nicht klar, wie ich die Parameter übergeben soll. Und vor allem, werden die ja noch mal gekapselt

also immer
<bean:criteriaElement>
dann die Parameter für eine Anfrage oder auch ein Datensatz der übermittelt werden soll und am ende kommt dann immer:
</bean:criteriaElement>
und das ganze wird dann ja noch mal gekapselt durch <lab:criterias> und </lab:criterias>.

Wäre echt dankbar für jede Hilfe, sehe einfach den Wald nicht mehr vor lauter Bäumen

Chaosworld

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt