Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

CONTEÚDO

  1. Visão geral
  2. Configuração
  3. Exemplo de utilização
  4. Assuntos relacionados

01. VISÃO GERAL


A biblioteca OpenEdge.Net.pl é projetada para ser utilizada como uma API para fazer solicitações HTTP e HTTPS.

Tendo como recursos:

  • Suporte da maioria dos métodos HTTP, como GET, PUT, POST e DELETE
  • Disponibilidade de um cliente com estado para gerenciar cookies
  • Suporte para servidores proxy que podem ser usados por solicitação ou por cliente
  • Redirecionamento automático de solicitações com base nos códigos de status retornados
  • Mecanismo de autenticação extensível, incluindo suporte para autenticação HTTP Basic e Digest

* Está biblioteca é desenvolvida e suportada diretamente pela Progress. Documentação: 

https://

...

...

...

...

...

.html

02. Configuração


Configuração

Para iniciar sua utilização é necessário incluir a biblioteca de procedimentos OpenEdge.Net.pl no PROPATH da seguinte maneira

...

:

SistemaCaminho 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
Informações
titleExemplo
C:\

...

dlc117\gui\netlib\OpenEdge.Net.pl

03. EXEMPLO DE UTILIZAÇÃO


Recursos

OpenEdge.Net.HTPP.

...

IHttpRequest https://

...

...

...

bundle/openedge-programming-interfaces-117/page/OpenEdge.Net.HTTP.IHttpRequest.html

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:

  • RequestBuilder:Get ( uri [, entity ])
  • RequestBuilder:Put ( uri, entity )
  • RequestBuilder:Post ( uri, entity )
  • RequestBuilder:Delete ( uri [, entity ])
  • RequestBuilder:Head ( uri )
  • RequestBuilder:Options ( uri [, entity ])
  • RequestBuilder:Trace ( uri )

Onde uri é a instância de objeto URI ou cadeia de caracteres e entity é a instância de objeto.

Bloco de código
titleExemplo GET
linenumberstrue
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.
Bloco de código
titleExemplo PUT
linenumberstrue
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.

OpenEdge.Net.HTPP.

...

HttpClient https://

...

...

...

bundle/openedge-programming-interfaces-117/page/OpenEdge.Net.HTTP.HttpClient.html

HttpClient faz a solicitação executando o método Execute(), que recebe IHttpRequest e retorna IHttpResponse.

Informações
titleRecomendação Progress

Recomenda-se que o client HTTP seja construído usando a classe OpenEdge.Net.HTTP.ClientBuilder

Bloco de código
titleExemplo de 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.

OpenEdge.Net.HTTP.IHttpResponse

...

...

...

...

bundle/openedge-programming-interfaces-117/page/OpenEdge.Net.HTTP.IHttpResponse.html

Quando a request tem um retorno de sucesso, um objeto IHttpResponse é retornado tendo duas propriedades importantes, Entity StatusCode.

A propriedade Entity possui um tipo definido de Progress.Lang.Object.

A propriedade StatusCode retorna o resultado da request.

Bloco de código
titleExemplo Status Code
linenumberstrue
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.

OpenEdge.Net.

...

...

...

...

bundle/openedge-programming-interfaces-117/page/OpenEdge.Net.URI.html

A classe URI encapsula o endereço de destino, incluindo o esquema, host, porta, caminho, consulta e outros elementos URI relacionados.

Bloco de código
titleExemplo de como construir um objeto URI
linenumberstrue
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', '').

Uso de

...

Cookies https://

...

...

...

...

html

Os cookies são armazenados na instância de classe OpenEdge.Net.HTTP.ICookieJar.

Regras de armazenamento de cookies

    • Devem estar associados a um domínio
    • Domínio do cookie e o domínio do host de solicitação devem ser iguais
    • Cookies que não têm data de validade são considerados cookies de sessão e são excluídos quando o CookieJar é excluído/limpo. Cookies de sessão podem ser limpos com o método CleanSessionCookies() .
Bloco de código
titleExemplo de implementação 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.

Considerações de

...

Segurança https://

...

...

...

...

html

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.

Exemplo de como realizar requisição com HTTPs

Bloco de código
titleExemplo de Requisição HTTPs
linenumberstrue
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 execução do fonte, e necessário seguir o passo de certificados

...

abaixo.


Como baixar os certificados de URL para utilização com HTTPs:

Para localizar os certificados da URL, pressione para Visualizar as Informações do site.

Image Modified



No pop-up que será exibido, localize a parte de Certificado e clique em "Válido".


Image Modified



Localize a aba "Caminho de Certificação". Nessa tela são exibidos todos os certificados da URL.


Image Modified



Para baixar o certificado, selecione o

...

desejável, vá para aba de "Detalhes" e clique

...

em Copiar para Arquivo...

Image Modified



Clique em "Avançar"

Image Modified



Marque a opção "X.509 binário codificado por DER (*.cer)" e clique em "Avançar"

Image Modified



Selecione o diretorio que deseja baixar o certificado e clique em "Avançar"

Image Modified



Clique em concluir. 

Image Modified



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).

Aviso
titleAtenção

Os certificados devem ser baixados do ultimo para o primeiro. E importados no proenv da mesma maneira, do ultimo para o primeiro.

...

04. ASSUNTOS RELACIONADOS



Aviso
titleDepreciação da api ut-http-api

A api ut-http-api esta em processo de depreciação, é recomendável substituir seu uso pelo recurso OpenEdge.Net.HTTP