Recentemente tive a necessidade de utilizar o HTTP Post, chamando uma URL passando um XML e recebendo um XML de resposta.
No final das contas, o processo é simples, mas não achei nada "pronto" na Web de como utiliza-lo.
Abaixo vão os passos necessários para criação de um objeto que chama o método HTTP Post:
1 - Objeto com resultado Web
- Crie um User Object do tipo Standart/InternetResult
- Declare uma variável de instancia onde será armazenada o retorno (No nosso exemplo, criamos a variável VISRetornoWeb )
- Na função InternetData(), atribua o parâmetro da função para a variável criada no passo acima
VISRetornoWeb = string(data)
return 1
2 - Criando objeto para disparar metodo HTTP Post
- Cria um objeto do tipo Custom
- Crie uma instancia do objeto criado na etapa 1 (No nosso caso, a instancia chama UOI_internet_resultado)
- Crie uma função para chamar o método HTTP Post com os seguintes argumentos
* Value String p_URL
* Value String p_ParametroWeb (Parâmetros que serão passados para Web)
* Reference String p_RetornoWeb (Parâmetros que serão retornados da Web)
- Coloque o seguinte código na função
Blob Vlblb_args
String Vls_headers
Long Vll_ret
p_retornoWeb = ''
Vlblb_args = blob(p_parametroWeb)
vll_ret = UOI_Inet.PostURL(p_url, Vlblb_args, vls_headers, UOI_internet_resultado)
if vll_ret = 1 then
VISMSG = ""
elseif vll_ret = -1 then
VISMSG = "Erro ao chamar o objeto de acesso a internet."
Return -1
elseif vll_ret = -2 then
VISMSG = "A URL informada é inválida."
Return -1
elseif vll_ret = -4 then
VISMSG = "Não foi possível conectar a Internet."
Return -1
elseif vll_ret = -5 then
VISMSG = "Não foi possível conectar a Internet utilizando protocolo seguro (HTTPS)."
Return -1
elseif vll_ret = -5 then
VISMSG = "Ocorreu um erro na requisão a Internet."
Return -1
else
VISMSG = "Ocorreu um erro não documentado no acesso a Internet. - Codigo :" + string(vll_ret)
return -1
end if
p_retornoWeb = uoi_internet_resultado.visretornoweb
return 1