A biblioteca OpenEdge.Net.pl é projetada para ser utilizada como uma API para fazer solicitações HTTP e HTTPS.
Tendo como recursos:
* Está biblioteca é desenvolvida e suportada diretamente pela Progress. Documentação:
Para iniciar sua utilização é necessário incluir a biblioteca de procedimentos OpenEdge.Net.pl no PROPATH da seguinte maneira:
| Sistema | Caminho da biblioteca |
|---|---|
| UNIX TTY | $DLC/tty/netlib/OpenEdge.Net.pl |
| Windows GUI | %DLC%\gui\netlib\OpenEdge.Net.pl |
| Windows TTY | %DLC%\tty\netlib\OpenEdge.Net.pl |
C:\dlc117\gui\netlib\OpenEdge.Net.pl |
Toda solicitação possui dois elementos obrigatórios: Um verbo HTTP e URI.
Para construir um objeto IHttpRequest se utiliza a classe OpenEdge.Net.Http.RequestBuilder tendo como métodos:
Onde uri é a instância de objeto URI ou cadeia de caracteres e entity é a instância de objeto.
USING OpenEdge.Net.HTTP.RequestBuilder. USING OpenEdge.Net.HTTP.IHttpRequest. DEFINE VARIABLE httpUrl AS CHARACTER NO-UNDO. DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO. httpUrl = "http://www.progress.com". oRequest = RequestBuilder:Get(httpUrl):Request. |
USING OpenEdge.Net.HTTP.RequestBuilder.
USING OpenEdge.Net.HTTP.IHttpRequest.
USING Progress.Json.ObjectModel.JsonObject.
DEFINE VARIABLE httpUrl AS CHARACTER NO-UNDO.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oJson AS JsonObject NO-UNDO.
httpUrl = "http://oemobiledemo.progress.com/VehicleOrderService/rest/VehicleOrder/Cart".
oJson = new JsonObject().
oJson:Add('dsShoppingCart', new JsonObject()).
oRequest = RequestBuilder:Put(httpUrl, oJson)
:AcceptJson()
:Request. |
HttpClient faz a solicitação executando o método Execute(), que recebe IHttpRequest e retorna IHttpResponse.
Recomenda-se que o client HTTP seja construído usando a classe OpenEdge.Net.HTTP.ClientBuilder |
USING OpenEdge.Net.HTTP.IHttpRequest.
USING OpenEdge.Net.HTTP.IHttpResponse.
USING OpenEdge.Net.HTTP.ClientBuilder.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
oResponse = ClientBuilder:Build():Client:Execute(oRequest).
MESSAGE
oResponse:StatusCode SKIP
oResponse:StatusReason SKIP
VIEW-AS ALERT-BOX. |
Quando a request tem um retorno de sucesso, um objeto IHttpResponse é retornado tendo duas propriedades importantes, Entity e StatusCode.
A propriedade Entity possui um tipo definido de Progress.Lang.Object.
A propriedade StatusCode retorna o resultado da request.
USING OpenEdge.Net.HTTP.IHttpRequest.
USING OpenEdge.Net.HTTP.IHttpResponse.
USING OpenEdge.Net.HTTP.ClientBuilder.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
oResponse = ClientBuilder:Build():Client:Execute(oRequest).
MESSAGE
oResponse:StatusCode SKIP
oResponse:StatusReason SKIP
VIEW-AS ALERT-BOX. |
A classe URI encapsula o endereço de destino, incluindo o esquema, host, porta, caminho, consulta e outros elementos URI relacionados.
USING OpenEdge.Net.URI.
USING OpenEdge.Net.UriSchemeEnum.
DEFINE VARIABLE oURI AS URI NO-UNDO.
oURI = new URI(string(UriSchemeEnum:http), 'oemobiledemo.progress.com').
oURI:Path = '/VehicleOrderService/rest/VehicleOrder/Cart'.
oURI:AddQuery('filter', ''). |
Os cookies são armazenados na instância de classe OpenEdge.Net.HTTP.ICookieJar.
Regras de armazenamento de cookies
USING OpenEdge.Net.HTTP.IHttpClient.
USING OpenEdge.Net.HTTP.ClientBuilder.
USING OpenEdge.Net.HTTP.ICookieJar.
USING OpenEdge.Net.HTTP.CookieJarBuilder.
USING OpenEdge.Net.HTTP.Cookie.
DEFINE VARIABLE moHttpClient AS IHttpClient NO-UNDO.
moHttpClient = ClientBuilder:Build()
:KeepCookies(CookieJarBuilder:Build():CookieJar)
:Client. |
O client HTPP pode realizar requisições HTTPS desde que os certificados do lado do client estejam instalados no armazenamento de certificados OpenEdge.
As credenciais não são armazenadas na biblioteca do client HTTP, as mesmas podem ser adicionadas em uma request ou URI utilizando o objeto OpenEdge.Net.HTTP.Credentials.
USING OpenEdge.Net.HTTP.IHttpRequest.
USING OpenEdge.Net.HTTP.IHttpResponse.
USING OpenEdge.Net.HTTP.ClientBuilder.
USING OpenEdge.Net.HTTP.IHttpClientLibrary.
USING OpenEdge.Net.HTTP.lib.ClientLibraryBuilder.
USING OpenEdge.Net.HTTP.RequestBuilder.
DEFINE VARIABLE oLib AS OpenEdge.Net.HTTP.IHttpClientLibrary NO-UNDO.
DEFINE VARIABLE oHttpClient AS OpenEdge.Net.HTTP.IHttpClient NO-UNDO.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
ASSIGN oLib = ClientLibraryBuilder:Build():sslVerifyHost(NO):library
oHttpClient = ClientBuilder:Build():UsingLibrary(oLib):Client.
ASSIGN oRequest = RequestBuilder:GET("https://www.google.com.br"):Request.
oResponse = oHttpClient:Execute(oRequest).
MESSAGE oResponse:StatusCode SKIP
oResponse:StatusReason SKIP
oResponse:ContentType SKIP
oResponse:Entity:ToString() VIEW-AS ALERT-BOX. |
Para localizar os certificados da URL, pressione para Visualizar as Informações do site.
No pop-up que será exibido, localize a parte de Certificado e clique em "Válido".

Localize a aba "Caminho de Certificação". Nessa tela são exibidos todos os certificados da URL.
Para baixar o certificado, selecione o desejável, vá para aba de "Detalhes" e clique em Copiar para Arquivo...
Clique em "Avançar"
Marque a opção "X.509 binário codificado por DER (*.cer)" e clique em "Avançar"
Selecione o diretorio que deseja baixar o certificado e clique em "Avançar"
Clique em concluir.
Para cada certificado baixado executar o seguinte comando no proenv: certutil -format DER -import diretorio\nome_certificado.cer (Exemplo: certutil -format DER -import C:\Temp\nome_do_certificao.cer).
Os certificados devem ser baixados do ultimo para o primeiro. E importados no proenv da mesma maneira, do ultimo para o primeiro. |
A api ut-http-api esta em processo de depreciação, é recomendável substituir seu uso pelo recurso OpenEdge.Net.HTTP |