Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   HTTPRIO: NS-Prefix in Request unterdrücken (https://www.delphipraxis.net/174711-httprio-ns-prefix-request-unterdruecken.html)

Nic2012 6. Mai 2013 17:46

HTTPRIO: NS-Prefix in Request unterdrücken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Benutze unter D7 THTTPRIO um einen externen Webservice (asmx via https) zu konsumieren. Im Request wird allerdings ein Namespace-Prefix NS1: vorgestellt, dass beim Server abgelehnt und nicht verarbeitet werden kann.

Hier das (vereinfachte) Request:
Code:
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <NS1:Node xmlns:NS1="http://.../">
         <.../>
      </NS1:Node>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Was mich etwas stutzig macht ist, dass in der WSDL noch steht
Code:
<s:import namespace="http://.../" />
Hat der Tag etwas damit zu tun ?
Bzw. welche der HTTPRIO Options ermöglicht, den Prefix zu unterdücken ?

Gruß,
Nic

Keldorn 6. Mai 2013 18:05

AW: HTTPRIO: NS-Prefix in Request unterdrücken
 
Hallo,

das ist ne gute Frage und da gibt es sicherlich einige, die sich für die Lösung interessieren würden ;-).

Nach meinem Kenntnistand gibts da keine Einstellmöglichkeiten. Am praktikabelsten ist es, HTTPRio.OnBeforeExecute zu nutzen und das erzeugte SOAP-XML mit Stringgreplace so zu ändern, bis es paßt. Wenn Du im Forum nach diesem Ereignis suchst, findest du auch Codebeispiele dazu.

Du kannst auch Programme wie SoapUI nutzen, um übertragene XML anzuzeigen, damit du siehst, wie es richtig aussehen müßte.

Ansonsten mal das Embarcadero-Forum durchsuchen https://forums.embarcadero.com/forum...mID=73&start=0
gugg hier auch seit langem wieder mal rein, es scheint so, daß JeanMarieBabet mal wieder etwas aktiver ist, da gibts auch mal wieder Antworten und Lösungen ;-).

Das mit Delphi7 und Webservice so ne Sache, hier gab es auch extra Soap-patches, die einige Probleme behoben haben.

gruß Frank

mjustin 6. Mai 2013 18:06

AW: HTTPRIO: NS-Prefix in Request unterdrücken
 
Gibt es ein funktionierendes XML Beispiel (zum Beispiel in der Dokumentation des Webservice, oder per SoapUI erzeugt)? Damit könnte man nachvollziehen was Delphi 'falsch' macht.

Nic2012 7. Mai 2013 15:21

AW: HTTPRIO: NS-Prefix in Request unterdrücken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die Unterstützung.
Wenn ich zur Laufzeit setzte
Code:
HTTPRIO.Converter.Options := HTTPRIO.Converter.Options + [soDocument]
bleiben die NS1 Prefixe im Request unterdrückt und die Anfrage wird jetzt vom Webservice problemlos angenommen.

Habe mir die OPToSoapDomConvert Unit genauer angeschaut und die dafür zuständige Methode InvContextToMsg benötigt das soDocument Flag.

Seltsam nur das ich dieses Flag im DFM eigentl. gesetzt hatte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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-2025 by Thomas Breitkreuz