Histórico da Página
CONTEÚDO
- Visão geral
- Configuração
- Exemplo de utilização
- 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:
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:
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 |
Informações | ||
---|---|---|
| ||
C:\dlc117\gui\netlib\OpenEdge.Net.pl |
03. EXEMPLO DE UTILIZAÇÃO
Recursos
OpenEdge.Net.HTPP.IHttpRequest https://docs.progress.com/pt-BR/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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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://docs.progress.com/pt-BR/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 | ||
---|---|---|
| ||
Recomenda-se que o client HTTP seja construído usando a classe OpenEdge.Net.HTTP.ClientBuilder |
Bloco de código | ||
---|---|---|
| ||
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 https://docs.progress.com/pt-BR/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 e StatusCode.
A propriedade Entity possui um tipo definido de Progress.Lang.Object.
A propriedade StatusCode retorna o resultado da request.
Bloco de código | ||||
---|---|---|---|---|
| ||||
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.URI https://docs.progress.com/pt-BR/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 | ||||
---|---|---|---|---|
| ||||
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://docs.progress.com/pt-BR/bundle/openedge-programming-interfaces-117/page/Implementing-stateful-clients-with-cookies.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 | ||
---|---|---|
| ||
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://docs.progress.com/pt-BR/bundle/openedge-programming-interfaces-117/page/Security-considerations.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 | ||||
---|---|---|---|---|
| ||||
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.
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).
Aviso | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
A api ut-http-api esta em processo de depreciação, é recomendável substituir seu uso pelo recurso OpenEdge.Net.HTTP |