Pegar Retorno de um Post via Função
Galerinha, estou com o seguinte problema...
Preciso fazer a comunicação com um serviço de interação de um sistema usado aqui na empresa onde trabalho... Ele tem toda a ferramenta pronta.
Seria como http://sistema.com.br/interacao.exe?funcao...r&dados=....
Isso seria usando GET... Só que eles mesmo recomendam via post...
Eu já consegui via GET só que o problema que eu infrentava era que eu jogava(como link) para página e morria nela... aparecia o codigo de retorno em uma página em branco. Entao consegui a seguinte função que le o arquivo de retorno...
$retorno = file_get_contents("http://sistema.com.br/interacao.exe?funcao=inserir&dados=....");
só que com isso estou usando o get, e nas minhas interações mais complexas tenho problemas de tamanho da url e tambem por nao conseguir passar caracteres especiais via get... como @, <> etc...
Minha solução foi tentar ir a busca de como fazer o metodo post sem ter que enviar por um formulário padrao para o servidor.
Encontrei a seguinte função...
function sendToHost($host,$method,$path,$data,$useragent=0)
{
if (empty($method)) {
$method = 'GET';
}
$method = strtoupper($method);
$fp = fsockopen($host, 80);
if ($method == 'GET') {
$path .= '?' . $data;
}
fputs($fp, "$method $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($data) . "\r\n");
if ($useragent) {
fputs($fp, "User-Agent: MSIE b\r\n");
}
fputs($fp, "Connection: close\r\n\r\n");
if ($method == 'POST') {
fputs($fp, $data);
}
while (!feof($fp)) {
$buf .= fgets($fp,128);
}
fclose($fp);
return $buf;
}
$return = sendToHost("sistema.com.br","POST","/interacao.exe","funcao=inserir&dados=....);
Otimo, pelos teste que fiz me parece ter dado certo, mas como nada é perfeito, estou parado na questao... Como eu vou conseguir o retorno que a interação me da por ai?
Agradeço a todos...
Discussão (8)
Carregando comentários...