Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wellington Z.

Pegar Retorno de um Post via Função

Recommended Posts

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wellington,

pelo que entendi, você quer que o programa lhe retorne um valor para a web correto??

explica melhor por favor... o que você quer e nem tanto o que esta acontecendo...

 

abraços,

léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resumindo, eu quero pegar o valor de retorno da página, se eu mandar por um formulário ela vai para essa página, vai mostrar o valor e vai "morrer".

Se eu fizer o comando $retorno = file_get_contents("pagina.php?variavel=valor"); ele irá me retornar só que estou mandando pelo metodo get, e isso tem certas limitações.

Quero conseguir um jeito de mandar via post e ter um retorno, por exemplo

 

$retorno = post("pagina.php,variavel=valor");

echo $retorno; //me dará o que a página respondeu.

 

Obs: A página pra onde estou querendo mandar os dados, ela já esta configurada para responder.

Se eu conseguir saber o que ela respondeu (pelo seu codigo fonte gerado, ou outro meio) e usando um metodo post fico extremamente satisfeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites
function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
Para chamar a função:
$data="email=".$_POST["email"];
$resposta= do_post_request($url, $data, $optional_headers = null);
echo $resposta;
//mostra a página com o retorno após o envio dos dados via post, ai é só manipula o retorno como desejar.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.