Thema: Delphi Soap Request bearbeiten

Einzelnen Beitrag anzeigen

Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#1

Soap Request bearbeiten

  Alt 15. Apr 2012, 00:04
Hallo,

ich versuche einen SoupRequest im HttpRioBeforeExec zu bearbeiten. Allerdings klappt das ganze nicht wie gewünscht:

Wenn ich so was mache:

Delphi-Quellcode:
  oXML:=TXMLDocument.Create(Application);
  try
    oxml.XML.Text:=SOAPRequest;
    oXML.Active:=true;
    oXML.XML.Text:=StringReplace(oXML.XML.Text,'<Blub><BlubId>','<Blub xsi:type="BlubTyp"><BlubId>',[rfReplaceAll]);
    SOAPRequest:=oXML.XML.Text;
    oXML.XML.SaveToFile('e:\test_1.xml');
dann wird in dem XML das Ersetzen korrekt durchgeführt. Wenn ich das ganze jetzt über Attribute versuche:

Delphi-Quellcode:
  oXML:=TXMLDocument.Create(Application);
  try
    oxml.XML.Text:=SOAPRequest;
    oXML.Active:=true;
    oNodeBlub:=(oXML.DOMDocument as IDOMNodeSelect).selectNodes('//BlubId');
    for iINdex:=0 to oNodeBlub.length-1 do begin
      oNode:=oNodeBlub.item[iINdex];
      oNode:=oNode.parentNode;
      oAttr:=oXML.DOMDocument.createAttribute('xsi:type');
      oAttr.nodeValue:='BlubTyp';
      oNode.attributes.setNamedItem(oAttr);
    end;
    SOAPRequest:=oXML.XML.Text;
    oXML.XML.SaveToFile('e:\test_1.xml');
Dann klappt das nicht. In der Text_1.xml ist kein Attribut enthalten. Allerdings ist nach dem Node.Attributes.SetNamedItem() der Wert Node.Attributes.Length=1 (vorher 0) - also wurde ein Attribut hinzugefügt.

Wenn ich jetzt dieses XML (ohne Attribut) in einer anderen Prozedur lade und den selben Code oben darauf los lasse, dann wird das Attribut gesetzt und gespeichert.

Ich dreh langsam durch. Ich versteh nich was ich falsch mache. Würde mich echt freuen, wenn mir jemand helfen kann..
Grüße
  Mit Zitat antworten Zitat