Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Fazer chamada POST através do PowerBuilder 7

Há ocasiões onde é necessário enviar um conjunto de informações (preenchidas em um formulário por exemplo) para algum serviço rodando em algum Servidor remoto. Uma maneira de fazer isso, é enviar essas informações através do método POST. Normalmente isso é feito através de um formulário HTML armazenado em um servidor web, porém é possível que uma aplicação PowerBuilder envie informações (de uma datawindow por exemplo) da mesma maneira.

No exemplo a seguir, o conteúdo de um formulário simples será enviado através do método POST para um script PHP armazenado em um servidor web. Este script apenas exibirá o conteúdo enviado pela nossa aplicação.

O script PHP

Um script simples em PHP fará o papel do serviço que receberá a requisição POST vinda do PowerBuilder.

testePOST.php


<?php
print_r($_POST); /* Exibe o conteúdo recebido via POST */
?>
A aplicação PowerBuilder

Em uma nova aplicação, crie uma Standard Class do tipo InternetResult. Este objeto manipulará as informações que nossa aplicação receberá do servidor. Salve esta classe com o nome n_cst_internet.


Na função InternetData(blob data) no objeto recém criado, coloque o seguinte código:
// Irá exibir em uma MessageBox o conteúdo retornado pelo servidor
// que recebeu o POST
MessageBox("O script PHP retornou:", String(data))
RETURN 0
Em seguida, crie uma nova janela com dois campos de texto (sle_nome e sle_email) e um botão (cb_enviar).


No evento clicked do botão cb_enviar, temos o seguinte código:
String httprequest, ls_header, ls_url, ls_headers
Long ll_ret, ll_length
Blob lblb_args
Inet linet_main
n_cst_internet luo_data

linet_main = CREATE inet
luo_data = CREATE n_cst_internet

String nome
nome = sle_nome.Text

String email
email = sle_email.Text

ls_url = "http://www.meusite.com.br/testePOST.php"
lblb_args = blob("nome=" + nome + "&email=" + email)
ll_length = Len(lblb_args)
ls_headers = "Content-Type: " + &
"application/x-www-form-urlencoded~n" + &
"Content-Length: " + String( ll_length ) + "~n~n"

ll_ret = linet_main.PostURL(ls_url,lblb_args,ls_headers,luo_data)

IF(ll_ret 1) THEN
MessageBox("ERRO", "POST falhou (retorno: " + String(ll_ret))
END IF
Rodando esta aplicação, receberemos o retorno do script PHP:


Observação: A função PostURL (no PowerBuilder 7) não permite que enviemos informações para uma porta diferente da 80 (não é possível fazer uma chamada para uma página HTTPS configurada na porta 8080 por exemplo). Aparentemente, a partir do PowerBuilder 8 essa limitação foi eliminada (não cheguei a testar).


This post first appeared on Rennerocha, please read the originial post: here

Share the post

Fazer chamada POST através do PowerBuilder 7

×

Subscribe to Rennerocha

Get updates delivered right to your inbox!

Thank you for your subscription

×