SOAP Toolkit

10. Februar 2009 15:37

Hi Leute,

ich versuche seit geraumer Zeit ueber eine SOAP Schnittstelle mit NAV zu kommunizieren nur habe ich das Problem, dass ich es bissher nur ueber den HTTP Weg zum funktionieren gebracht habe. Diesen will ich aber eigentlich nicht! Ich wuerde gern den anderen weg gehen, nur kommt da ein Fehler nach dem anderen. Hauptproblem fuer mich:
Wie stelle ich meine XML Struktur nach?

Die Struktur die ich ca. aufbauen muss ist folgende (etwas verändert wegen der Daten etc.):

Code:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:mko-stads">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:select soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <in0 xsi:type="msg:thisFunction" xmlns:msg="http://msg.soap.sla">
            <Id xsi:type="dtyp:AN15Type" xmlns:dtyp="http://dtyp.soap.sla">10000</Id>
            <otherId xsi:type="dtyp:CS840018Type" xmlns:dtyp="http://dtyp.soap.sla">2</otherId >         
         </in0>
      </urn:select>
   </soapenv:Body>
</soapenv:Envelope>


ich weiss nur noch nich wie ich dieses mit dem Toolkit abbilden soll. Ich habe das zurzeit so weit:

Code:
IF ISCLEAR(locautSoapHttpConnector) THEN CREATE(locautSoapHttpConnector);   

locautSoapHttpConnector.Property('EndPointURL', 'TheWebServiceIP');
locautSoapHttpConnector.Connect;

locautSoapHttpConnector.Property('AuthUser', 'test');
locautSoapHttpConnector.Property('AuthPassword', 'test');
locautSoapHttpConnector.Property('Timeout', 5 * 1000);

locautSoapHttpConnector.Property('SoapAction', '"');

IF ISCLEAR(locautSoapSerializer) THEN CREATE(locautSoapSerializer);

locautSoapHttpConnector.BeginMessage;
  locautSoapSerializer.Init(locautSoapHttpConnector.InputStream); 
  locautSoapSerializer.StartEnvelope('soapenv', 'STANDARD');
    locautSoapSerializer.SoapNamespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');
    locautSoapSerializer.SoapNamespace('xsd', 'http://www.w3.org/2001/XMLSchema');
    locautSoapSerializer.SoapNamespace('urn', 'mko-stads');   
    locautSoapSerializer.StartHeader;
    locautSoapSerializer.EndHeader;                               
    locautSoapSerializer.StartBody; 
      locautSoapSerializer.StartElement('select', 'http://schemas.xmlsoap.org/soap/encoding/', 'urn');
   
      // ???

      locautSoapSerializer.EndElement;
    locautSoapSerializer.EndBody;
  locautSoapSerializer.EndEnvelope;

locautSoapHttpConnector.EndMessage; 


und ab der Fragezeichen weiss ich einfach nicht weiter....wegen der Datentypen etc..
Egal was ich mache, ich bekomme beim versenden (EndMessage) einen Fehler, der iwie sich von code zu code veraendert mir aber nicht viel sagt.

weiss einer von euch was man da machen koennte?

Re: SOAP Toolkit

23. Februar 2009 09:37

nur als Info an alle die evtl. mal auf aehnliche Probleme stossen:

mir wurde dazu geraten ein WSDL-Generator zu nutzen statt jede Anfrage selbst zu generieren.
Wie das allerdings geht werde ich noch recherchieren müssen. Ich hoffe das NAV das auch abbilden kann ohne ne extra DLL schreiben zu muessen.

Re: SOAP Toolkit

23. Februar 2009 10:02

Ich versteh zwar nicht, warum Du unbedingt SOAP direkt verwenden willst, aber hast Du schon mal darüber nachgedacht auf 2009 umzustellen? Da wären die Webservices mit drin und Du brauchst keine DLL zu schreiben (ist aber doch auch nicht so aufwendig).

Re: SOAP Toolkit

23. Februar 2009 17:25

in 2009 waeren Webservices drin ja! ABER
wir wollen keine erstellen sondern einen schon existierenden Abfragen!

ausserdem versuche ich ja grade das DLL schreiben zu vermeiden.... nur hab ich schon die befuerchtung das dies nicht geht!

Re: SOAP Toolkit

24. Februar 2009 11:55

Hi,

also mit SOAP habe ich auch schon mal "rumgekaempft". Ueberhaupt bin ich jetzt nicht so der Profi darin.
Wir haben es dann auch mit einer DLL in VB geloest, welche ein Arbeitskollege erstellt hat.

Das Problem im Navision ist hauptsaechlich, dass man jeden Schritt selbst machen muss, in VB z.B. kann man, wie du schon selbst erwaehnt hast, auf einen WSDL Generator zurueckgreifen.

Welche sonstigen Moeglichkeiten NAV5 diesbezueglich bietet, kann ich leider nicht sagen, wir arbeiten hier mit der 3.60er Version.

Gruesse
feri

Re: SOAP Toolkit

24. Februar 2009 16:06

so.... nun bin ich mir sicher:

es geht zwar ohne aber besser ist mit externer DLL.


an alle die das Problem mal bekommen: lest die WSDL ein! und wenn ihr fragen habt, schreibt mich ruhig an ^^ ich versuch dann weiter zu helfen soweit ich dann komme :D