| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*------------------------------------------------------------------------
- File : GetRestDataExample.p
- Purpose :
- Syntax :
- Description :
- Author(s) : javier.garcia
- Created : Wed Nov 27 15:28:15 CET 2019
- Notes :
- ----------------------------------------------------------------------*/
- /* *************************** Definitions ************************** */
- USING OpenEdge.Net.HTTP.* FROM PROPATH.
- USING OpenEdge.Net.URI FROM PROPATH.
- USING OpenEdge.Core.String FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
- USING OpenEdge.Net.HTTP.IHttpClientLibrary.
- USING OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder.
- USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
- /* ******************** Preprocessor Definitions ******************** */
- DEFINE VARIABLE oCredentials AS Credentials NO-UNDO.
- DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
- DEFINE VARIABLE oJson AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonEntity AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonParamEntity AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonMappings AS JsonArray NO-UNDO.
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oLib AS IHttpClientLibrary NO-UNDO.
- DEFINE VARIABLE cUrl AS CHARACTER INITIAL "https://test.digitaldrink-online.um3o.de/b2b-digitaldrink-dataservice/export" NO-UNDO.
- DEFINE VARIABLE cLoginName AS CHARACTER INITIAL "Huber" NO-UNDO.
- DEFINE VARIABLE cPassword AS CHARACTER INITIAL "rkZR9BwM" NO-UNDO.
- DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
- DEFINE VARIABLE lcJson AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
- DEFINE VARIABLE ix AS INTEGER NO-UNDO.
- DEFINE VARIABLE iCount AS INTEGER NO-UNDO.
- /* *************************** Main Block *************************** */
- /*SESSION:DEBUG-ALERT = TRUE. */
- /* */
- /*LOG-MANAGER:LOGFILE-NAME = "logWorkaround.txt".*/
- /*LOG-MANAGER:LOGGING-LEVEL = 5. */
- /*LOG-MANAGER:CLEAR-LOG(). */
- /* Generate Request JSON Body Raw */
- oJsonMappings = NEW JsonArray().
- oJsonMappings:Add("content.nutritionInfoId").
- oJsonParamEntity = NEW JsonObject().
- oJsonParamEntity:Add("clientId", "Huber").
- oJsonParamEntity:Add("clientName", "Testuser Huber").
- oJsonParamEntity:Add("mappings", oJsonMappings).
- oJsonParamEntity:Add("language", "de").
- oJsonEntity = NEW JsonObject().
- oJsonEntity:Add("senderName", "Freitext-H�ndlerbezeichnung").
- oJsonEntity:Add("type", "EXP002").
- oJsonEntity:Add("parameters", oJsonParamEntity).
- /* Auth */
- oCredentials = NEW Credentials("application", cLoginName, cPassword).
- oRequest = RequestBuilder:Post(cUrl,oJsonEntity)
- :UsingBasicAuthentication(oCredentials)
- :ContentType("application/json; charset=utf-8")
- :AcceptJson()
- :Request.
- oLib = ClientLibraryBuilder:Build()
- :sslVerifyHost(NO)
- :ServerNameIndicator('test.digitaldrink-online.um3o.de')
- :library.
-
- oResponse = ClientBuilder:Build()
- :UsingLibrary(oLib)
- :Client
- :Execute(oRequest).
- /* Response JSON */
- IF oResponse:StatusCode <> 200 THEN
- MESSAGE "Request Error: " + STRING(oResponse:StatusCode)
- VIEW-AS ALERT-BOX.
- ELSE
- DO:
- oParser = NEW ObjectModelParser().
- oJsonObject = CAST(oParser:Parse(CAST(oResponse:Entity, JsonObject):GetJsonText()), JsonObject).
-
- MESSAGE
- oJsonObject:GetCharacter("state") SKIP
- oJsonObject:GetCharacter("stateMessage") SKIP
- oJsonObject:GetInteger("stateCount")
- VIEW-AS ALERT-BOX.
-
- DO ix = 1 TO oJsonObject:GetInteger("stateCount"):
- MESSAGE oJsonObject:GetJsonArray("mappings"):GetJsonObject(ix):GetJsonObject("content"):GetJsonObject("nutritionInfoId"):GetCharacter("protein")
- VIEW-AS ALERT-BOX.
- END.
- END.
- CATCH oError AS Progress.Lang.Error :
- MESSAGE oError:GetMessage(1) SKIP(2)
- oError:CallStack
- VIEW-AS ALERT-BOX.
- END CATCH.
-
- /* *************************** Example *************************** */
- /*https://knowledgebase.progress.com/articles/Article/example-using-system-net-http-httpclient-to-post-to-a-rest-web-service*/
- /*https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvpin/openedge.net.http.ihttprequest.html*/
- /*https://knowledgebase.progress.com/articles/Article/How-to-consume-a-REST-Webservice-from-an-OpenEdge-Client*/
- /*https://knowledgebase.progress.com/articles/Article/How-to-store-JSON-from-an-HTTP-service-in-a-temp-table*/
- /*https://community.progress.com/community_groups/openedge_development/f/19/t/58920*/
- /*https://knowledgebase.progress.com/articles/Article/How-to-send-a-string-as-the-Request-Body-when-using-the-OpenEdge-HTTP-client*/
- /*https://github.com/PeterJudge-PSC/http_samples/tree/master/http_client/http_authentication*/
- /*https://www.youtube.com/watch?v=e4_4Ls2XLOM*/
- /* JSON */
- /*https://knowledgebase.progress.com/articles/Article/how-to-create-a-jsonobject-from-a-dataset-and-back*/
- /*https://knowledgebase.progress.com/articles/Article/How-to-turn-a-string-into-a-JsonObject*/
- /*https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvjsn/inferring-abl-schemas-from-json-data.html#wwID0ETIGM*/
|