OBJECT Codeunit 50098 SoapTest { OBJECT-PROPERTIES { Date=16.08.20; Time=22:31:30; Modified=Yes; Version List=; } PROPERTIES { OnRun=VAR Contact@50000 : Record 5050; BEGIN // TEST SendLoginRequest(); END; } CODE { VAR Text001@50000 : TextConst 'ENU=Transfer to Finkzeit is not activated!;DES=šbermittlung an Finkzeit ist nicht aktiviert!'; Text002@50002 : TextConst 'ENU=Error %1 - %2 from web service %3.;DES=Fehler %1 - %2 beim Aufruf vom Web Service %3.'; gRBCustCompSetup@50001 : Record 50000; gFinkSessionID@50003 : Text; Text003@50007 : TextConst 'DES=Fehler aufgetreten'; Text004@50004 : TextConst 'DES=Es sind bereits alle verfgbaren Sitzungen in Verwendung'; Text005@50005 : TextConst 'DES=Ungltiger Benutzername oder Kennwort'; Text006@50006 : TextConst 'DES=Login erfolgreich, Kennwort des Benutzers muss ge„ndert werden'; Text007@50008 : TextConst 'ENU=Finzkeit Kunde %1 angelegt.'; Text008@50009 : TextConst 'ENU=Sales Order %1 exported to Finkzeit.;DES=Auftrag %1 nach Finkzeit exportiert.'; Text009@50010 : TextConst 'ENU=Contact %1 exported to Fiunkzeit.;DES=Kontakt %1 nach Finkzeit exportiert.'; gCredential@50012 : DotNet "'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.NetworkCredential"; gHttpWebRequest@50011 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.HttpWebRequest"; Text3031165@50016 : TextConst 'ENU=The object ''HttpWebRequest'' first needs to be initialized with the properyt ''Uri''.;DES=Das Objekt ''HttpWebRequest'' muss zuerst mit dem Property ''Uri'' initialisiert werden.'; Text3031166@50015 : TextConst 'ENU=Invalid parameter ''%1'' calling ''ActivateApp''.;DES=Ungltiger Parameter ''%1'' beim Aufruf von ''ActivateApp''.'; Text3031167@50014 : TextConst 'ENU=The webservice sent an error.\\Webservice address:\%1\\Webservice response:\%2;DES=Der Webservice hat einen Fehler zurckgegeben.\\Webservice Adresse:\%1\\Webservice Antwort:\%2'; Text3031168@50013 : TextConst 'ENU=The error ''%1'' occured in the http-request.;DES=Beim Http-Request ist der Fehler ''%1'' aufgetreten.'; LOCAL PROCEDURE SendLoginRequest@3031165(); VAR RBGenObjHandlerMgt@3031167 : Codeunit 3031177; XmlDocOut@3031166 : DotNet "'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlDocument"; XmlDocIn@3031169 : DotNet "'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlDocument"; ParametersNodeList@3031173 : DotNet "'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlNodeList"; ParameterElement@3031172 : DotNet "'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlElement"; ParameterNode@3031171 : DotNet "'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlElement"; NameSpaceManager@3031177 : DotNet "'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlNamespaceManager"; XMLDOMMgt@3031180 : Codeunit 6224; FileMgt@3031178 : Codeunit 419; i@3031174 : Integer; ServerTempFileName@3031181 : Text; HttpStatus@3031168 : Text; XmlDocInFileName@3031170 : Text; FaultCode@3031175 : Text; FaultString@3031176 : Text; ServicePointManager@50001 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.ServicePointManager"; SecurityProtocolType@50002 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.SecurityProtocolType"; BEGIN XmlDocOut := XmlDocOut.XmlDocument; XmlDocOut.Load(WriteReq_OpenSession); ServicePointManager.SecurityProtocol := SecurityProtocolType.Tls12; WITH gRBCustCompSetup DO BEGIN HttpWebRequestSetProperty('URI',"Finkzeit WS Endpoint"); HttpWebRequestSetProperty('Timeout','30000'); HttpWebRequestSetProperty('Method','POST'); HttpWebRequestSetProperty('ContentType','text/xml;charset=UTF-8'); HttpWebRequestAddHeader('SOAPAction','""'); HttpWebRequestAddHeader('accept-encoding','gzip,deflate'); END; HttpStatus := HttpWebRequestGetResponse(XmlDocOut,XmlDocIn); CASE HttpStatus OF 'OK': BEGIN ParameterElement := XmlDocIn.DocumentElement; ParameterElement := ParameterElement.FirstChild; ParameterElement := ParameterElement.FirstChild; ParametersNodeList := ParameterElement.ChildNodes; ParameterNode := ParametersNodeList.Item(0); gFinkSessionID := ParameterNode.InnerText; END; ELSE BEGIN ERROR(Text002,HttpStatus,'',gRBCustCompSetup."Finkzeit WS Endpoint"); END; END; END; PROCEDURE WriteReq_OpenSession@50003() ServerFileName : Text; VAR CompanyInformation@3031166 : Record 79; FileMgt@3031167 : Codeunit 419; f@3031165 : File; BEGIN ServerFileName := FileMgt.ServerTempFileName('xml'); CompanyInformation.GET; f.CREATE(ServerFileName,TEXTENCODING::UTF8); f.TEXTMODE(TRUE); f.WRITE(''); f.WRITE(''); f.WRITE(''); f.WRITE(''); f.WRITE('' + gRBCustCompSetup."Finkzeit License" + ''); f.WRITE(''); f.WRITE(''); f.WRITE(''); f.CLOSE; END; PROCEDURE CheckIfHttpWebRequestObjectIsNull@1109400000(); BEGIN IF ISNULL(gHttpWebRequest) THEN ERROR(Text3031165); END; PROCEDURE HttpWebRequestSetProperty@1100108000(pName@1100108000 : Text;pValue@1100108001 : Text); VAR Timeout@1109400000 : Integer; BEGIN IF (pName <> 'URI') THEN CheckIfHttpWebRequestObjectIsNull(); CASE UPPERCASE(pName) OF 'URI': BEGIN gHttpWebRequest := gHttpWebRequest.Create(pValue); gHttpWebRequest.UseDefaultCredentials(TRUE); END; 'TIMEOUT': BEGIN EVALUATE(Timeout,pValue); gHttpWebRequest.Timeout := Timeout; END; 'METHOD': gHttpWebRequest.Method := pValue; 'CONTENTTYPE': gHttpWebRequest.ContentType := pValue; 'ACCEPT': gHttpWebRequest.Accept := pValue; 'USERNAME': BEGIN gHttpWebRequest.UseDefaultCredentials(FALSE); gCredential := gCredential.NetworkCredential; gCredential.UserName := pValue; END; 'PASSWORD': BEGIN IF NOT ISNULL(gCredential) THEN BEGIN gCredential.Password := pValue; gHttpWebRequest.Credentials := gCredential; END; END; END; END; PROCEDURE HttpWebRequestAddHeader@1100108002(pName@1100108000 : Text;pValue@1100108001 : Text); BEGIN CheckIfHttpWebRequestObjectIsNull(); gHttpWebRequest.Headers.Add(pName,pValue); END; PROCEDURE HttpWebRequestGetResponse@1100108001(pXMLRequestDoc@1100108001 : DotNet "'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlDocument";VAR pXMLResponseDoc@1100108000 : DotNet "'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Xml.XmlDocument") HttpStatus : Text; VAR FileMgmt@3031169 : Codeunit 419; GenObjHandler@1109400001 : DotNet "'RBNav2015GenericObjHandler, Version=8.0.1.0, Culture=neutral, PublicKeyToken=null'.GenericObjHandler.Handler"; IOFile@3031170 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.File"; MemoryStream@1109400000 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.MemoryStream"; HttpWebResponse@1109400002 : DotNet "'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.HttpWebResponse"; TempFilePath@3031168 : Text; TempFile@3031167 : File; TempFileContent@3031166 : Text; OutStream@3031165 : OutStream; BEGIN MemoryStream := gHttpWebRequest.GetRequestStream; pXMLRequestDoc.Save(MemoryStream); MemoryStream.Flush; MemoryStream.Close; GenObjHandler := GenObjHandler.Handler(); HttpWebResponse := GenObjHandler.GetResponse(gHttpWebRequest); HttpStatus := FORMAT(HttpWebResponse.StatusCode); IF HttpStatus IN ['OK','InternalServerError'] THEN BEGIN MemoryStream := HttpWebResponse.GetResponseStream; TempFilePath := FileMgmt.ServerTempFileName(''); TempFile.CREATE(TempFilePath); TempFile.CREATEOUTSTREAM(OutStream); COPYSTREAM(OutStream,MemoryStream); TempFile.CLOSE; TempFileContent := IOFile.ReadAllText(TempFilePath); pXMLResponseDoc := pXMLResponseDoc.XmlDocument; GenObjHandler.InvokeMethod(pXMLResponseDoc,'LoadXml',TempFileContent); IF GenObjHandler.HasException THEN BEGIN ERASE(TempFilePath); ERROR(Text3031167,HttpWebResponse.ResponseUri,TempFileContent); END; ERASE(TempFilePath); MemoryStream.Flush; MemoryStream.Close; END ELSE ERROR(Text3031168,HttpStatus); END; BEGIN { } END. } }