Exemplo de utilização da função php stream_context_create

A função stream_context_create  utiliza-se para criar um fluxo de contexto (um conjunto de de informações referentes a uma requisição http, ftp, ssl, etc) e configurar a forma como a requisição será realizada. A função permite usar várias opções de configuração, como Socket, http, ftp e outros.

resource stream_context_create ([ array $options [, array $params ]] )

Vamos então criar um programa exemplo com as opções de contexto para uma requisição HTTP comum.


$data = array ('nome' => 'maria', 'idade' => '19');
$data = http_build_query($data);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,et;q=0.2,es;q=0.2,id;q=0.2,fr;q=0.2,gl;q=0.2,de;q=0.2
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Cache-Control: max-age=0
Connection: keep-alive',
'content' => $data
)
);

Como se pode observar temos um array principal informando o protocolo usado no contexto, que é o http, que é o item do primeiro array. Dentro do array http temos as seguintes variáveis do contexto da requisição:

  • Method: tipo do método usado para a requisição ( POST ou GET). No nosso caso estamos a utilizar o POST
  • Header: Variáveis de cabeçalho. Aqui podemos enviar os tipos comuns de informações que são enviadas no cabeçalho das requisições, como cookiescontent-typeuser-agent, utilizador e password de uma autenticação HTML.
  • Content: As variáveis enviadas no POST ou GET. Como alternativa à stringnome=valor&nome=valor, é possível usar função http_build_query  para transformar um array no estilo chave=>valor numa querystring de url. Essa abordagem é mais prática e mais segura.
$context = stream_context_create($opts);

Depois de criada o fluxo de contexto,  vamos usar a função php file_get_contents  par enviar a requisição de uma pagina x ao servidor. Observe o código abaixo:

$http='http://www.pagina_x.html';
$data = file_get_contents($http, true, $context);

A função tem muitas opções que podem ser utilizadas conforme o que for necessário.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *