/*------------------------------------------------------------------------ File : workaround.p Purpose : Syntax : Description : Author(s) : javier.garcia Created : Tue Apr 16 11:50:36 CEST 2019 Notes : ----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ USING System.*. USING OpenEdge.Net.URI. DEFINE VARIABLE oURI AS URI NO-UNDO. DEFINE VARIABLE HttpClient AS CLASS System.Net.WebClient. DEFINE VARIABLE webResponse AS LONGCHAR NO-UNDO. DEFINE VARIABLE oEntity AS Object NO-UNDO. DEFINE VARIABLE hXmlDoc AS HANDLE NO-UNDO. DEFINE VARIABLE hXmlNode AS HANDLE NO-UNDO. DEFINE VARIABLE hXmlChild AS HANDLE NO-UNDO. DEFINE VARIABLE hXmlAttr AS HANDLE NO-UNDO. DEFINE VARIABLE ccHTML AS CHARACTER NO-UNDO. DEFINE VARIABLE lcHTML AS LONGCHAR NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE lok AS LOG NO-UNDO. DEFINE VARIABLE cElement AS CHARACTER NO-UNDO. DEFINE VARIABLE cValue AS CHARACTER NO-UNDO. DEFINE VARIABLE cSession AS CHARACTER NO-UNDO. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO. FIX-CODEPAGE (webResponse) = "UTF-8". /* ******************** Preprocessor Definitions ******************** */ /* *************************** Main Block *************************** */ oURI = OpenEdge.Net.URI:Parse('https://10.153.1.241'). oURI:Port = 8802. oURI:Path = 'cgi-bin/gadgetapi'. oURI:AddQuery("cmd", "Login"). oURI:AddQuery("gsUser", "14"). oURI:AddQuery("gsPass", "14!K?s6v"). System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy(). HttpClient = NEW System.Net.WebClient(). webResponse = HttpClient:DownloadString(oURI:ToString()). CREATE X-DOCUMENT hXmlDoc. hXmlDoc:LOAD("LONGCHAR",webResponse,FALSE). hXmlDoc:SAVE('file', 'C:/temp/entity.xml'). CREATE X-NODEREF hXmlNode . CREATE X-NODEREF hXmlChild. CREATE X-NODEREF hXmlAttr . hXmlDoc:GET-DOCUMENT-ELEMENT(hXmlNode). DO ii = 1 TO hXmlNode:NUM-CHILDREN: lok = hXmlNode:GET-CHILD(hXmlChild, ii). IF NOT lok THEN NEXT. IF hXmlChild:SUBTYPE <> 'ELEMENT' THEN NEXT. cElement = hXmlChild:NAME. lok = hXmlChild:GET-CHILD(hXmlAttr, 1). IF NOT lok THEN NEXT. cValue = hXmlAttr:NODE-VALUE. CASE cElement: WHEN 'ID' THEN cSession = cValue. WHEN 'ERROR' THEN cMessage = cValue. END CASE. END. MESSAGE cSession cMessage VIEW-AS ALERT-BOX. FINALLY: IF VALID-OBJECT (HttpClient) THEN DO: HttpClient:Dispose(). DELETE OBJECT HttpClient. END. END FINALLY.