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
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
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
2 comentários:
oi Thiago, td bem?
bom, deixa ver se tu consegue me ajudar...
tenho que chamar um webservice pelo PB para retornar muitas informações, como estou desenvolvendo em PB8 e este ainda não tem nativo chamada para webservices, resolvi fazer essa chamada pelo oracle, então criei uma procedure, mas agora me deparei com um problema, estou recebendo muita informação e o tipo de campo que estou utilizando não é suficiente, estou trabalhando com o long, tentei usar o clob, mas não sei se não soube usar corretamente, até acho que deve ser isso, mas igual não está funcionando, até pq não consegui fazer o pb entender o tipo clob, pois gravo uma tabela e leio a mesma no pb....bom tu já precisou fazer algo similar a isso?, tens alguma idéia para me dar?
se tiver alguma dica, meu e-mail é dadi_rs@yahoo.com.br
grata,
Dadi - POA
Olá Thiago!
Tenho que fazer um download de um arquivo da internet, só que pelo PB, então, a questão é como irei conseguir efetuar a autenticação na página(responder ao header enviado pela página), efetuar o login(pois é necessário efetuar o login), e setar os parametros para fazer o download do arquivo. Não deve abrir a pagina do browser, o usuário irá clicar no botão e em seguida irá aparecer uma janela para o mesmo informar o usuário e senha(para acessar a página da web), e depois da autenticação efetuada, irá aparecer outra janela para ele informar os parametros para baixar o arquivo desejado.
Os link's que deverão ser executado eu já tenho. só preciso saber como fazer!
OBS: Uso o PB 9
Email: lucimar.frassetto@gmail.com
Desde já agradeço!
Atenciosamente,
Lucimar Frasseto Canto.
Postar um comentário