1. Etapas básicas da solicitação de curl:
(1) Inicialização
(2) Defina opções, incluindo URL
(3) Execute e obtenha o conteúdo do documento HTML
(4) Libere a alça do CURL
A cópia do código é a seguinte:
<? php
// 1. Inicialização
$ ch = curl_init ();
// 2. Defina opções, incluindo URL
Curl_SESTOPT ($ CH, Curlopt_url, "http://www.cnblogs.com/it-cen/");
// retorna as informações obtidas por Curl_Exec () como um fluxo de arquivo em vez de emitir diretamente
Curl_SESTOPT ($ CH, Curlopt_ReTurnTransfer, 1);
// Ao iniciar, as informações do arquivo de cabeçalho serão emitidas como um fluxo de dados
Curl_SESTOPT ($ CH, Curlopt_Header, 1);
// 3. Execute e obtenha conteúdo do documento HTML
curl_exec ($ CH);
// 4. Solte a alça
curl_close ($ ch);
eco $ CH;
?>
Nota: O segundo passo é o mais importante, ou seja, a função curl_setot ()
Podemos adicionar uma instrução para verificar se há erros. Aqui devemos prestar atenção ao uso de "=== false", que é distinguir entre saída vazia e valor booleano false
A cópia do código é a seguinte:
$ output = curl_exec ($ CH);
if ($ output === false) {
eco "Erro a curl:". Curl_error ($ ch);
}
A função curl_getInfo () retorna informações sobre esta solicitação após a execução do CURL, o que é útil para depuração e solução de problemas:
A cópia do código é a seguinte:
curl_exec ($ CH);
$ info = curl_getinfo ($ ch);
eco '<pre>';
print_r ($ info);
eco '</pre>';
Dados retornados
A cópia do código é a seguinte:
Variedade
(
[url] => http://www.cnblogs.com/it-cen/
[content_type] => text/html; charset = utf-8
[http_code] => 200
[header_size] => 312
[request_size] => 61
[FileTime] => -1
[SSL_VERIFY_RESULT] => 0
[redirect_count] => 0
[total_time] => 0,172
[namelookup_time] => 0,016
[Connect_time] => 0,063
[pretansfer_time] => 0,063
[size_upload] => 0
[size_download] => 14658 <span style = "cor: #ff0000;"> // tamanho de dados solicitado </span>
[speed_download] => 85220
[speed_upload] => 0
[Download_content_length] => 14658
[upload_content_length] => 0
[startTransfer_time] => 0,125
[redirect_time] => 0
[Certinfo] => Array
(
)
[redirect_url] =>
)
2. Esta informação é muito útil na depuração . Por exemplo, quando o rastreamento de enrolamento, os dados de rastreamento podem ocorrer geralmente devido a razões de rede, e podemos calcular o tamanho do arquivo através dos dados adquiridos e compará -los com os dados obtidos. Se os tamanhos forem iguais, é determinado que o download está correto; caso contrário, faremos tentativas repetidas.
Vamos dar uma olhada em um exemplo de imagens rastejantes:
A cópia do código é a seguinte:
<? php
cabeçalho ("Tipo de conteúdo: imagem/png");
// 1. Inicialização
$ ch = curl_init ();
// 2. Defina opções, incluindo URL
Curl_SESTOPT ($ CH ,, CURLOPT_URL, "http://img04.taobaocdn.com/tfscom/tb1omathxxxxxajxvxxtkxbfxxx.png");
Curl_SESTOPT ($ CH, Curlopt_ReTurnTransfer, 1);
Curl_SESTOPT ($ CH, Curlopt_Header, 1);
// 3. Executar e obter conteúdo
$ res = curl_exec ($ ch);
// Obtenha informações
$ info = curl_getinfo ($ ch);
// 4. Libere recursos
curl_close ($ ch);
file_put_contents ("d: /aa.png", $ res);
$ size = fileSize ("d: /aa.png");
if ($ size! = $ info ['size_download']) {
eco "Os dados baixados estão incompletos, faça o download de novo";
} outro {
eco "Download Data Complete";
}
?>
3. Envie dados usando o método de post em Curl
A cópia do código é a seguinte:
<? php
$ ch = curl_init ();
$ data = array ('nome' => 'kelly', 'idade' => 27, 'sexo' => 1);
Curl_SESTOPT ($ CH, Curlopt_url, "http: //localhost.post.php");
Curl_SESTOPT ($ CH, Curlopt_ReTurnTransfer, 1);
// defina como postagem
curl_setot ($ CH, Curlopt_Post, 1);
// Adicione a variável post
Curl_SESTOPT ($ CH, Curlopt_Postfields, $ dados);
$ res = curl_exec ($ ch);
curl_close ($ ch);
echo $ res;
?>
Este método pode simular mensagens ou você pode sentar em um robô de rega, e as idéias são as mesmas
4. Carregue arquivos com CURL
A cópia do código é a seguinte:
<? php
// Solicitação de dados enviados
$ data = array ('nome' => 'beleza', "upload" => "@a.zip");
$ ch = curl_init ();
Curl_SESTOPT ($ CH, Curlopt_url, "http://127.0.0.1/socket/upload_file.php");
Curl_SESTOPT ($ CH, Curlopt_ReTurnTransfer, 1);
curl_setot ($ CH, Curlopt_Post, 1);
Curl_SESTOPT ($ CH, Curlopt_Postfields, $ dados);
$ res = curl_exec ($ ch);
curl_close ($ ch);
echo $ res;
?>
Nota: Ao enviar um arquivo, prefixo o @ antes do nome do arquivo e use o caminho completo
5. Item de configurações de enrolamento
De fato, o CURL possui muitas opções de configuração, e essas opções são a alma do Curl. Definindo -o através do Setopt (), o seguinte resume vários itens de configuração comuns e importantes. Espero que seja de alguma ajuda para os leitores ao usar o CURL no futuro:
Curlopt_AutoreFerer: Ao redirecionar de acordo com o local:, o referente: as informações no cabeçalho são definidas automaticamente.
Curlopt_cookieSession: Quando ativado, o CURL passará com força um SessionCookie, ignorando outros cookies
Curlopt_Header: Saia as informações do arquivo de cabeçalho como um fluxo de dados
Curlopt_infilesize: Defina o tamanho do arquivo carregado, em bytes
Curlopt_MaxConnects: Número máximo de conexões permitidas
Curlopt_maxredirs: especifique o número máximo de redirecionamentos http
Curlopt_cookie: Defina o conteúdo do "cookie:" parte da solicitação HTTP. Vários cookies são seguidos por um ponto e vírgula e um espaço é adicionado ao ponto e vírgula.
Curlot_Postfields: Todos os dados são enviados usando a operação "Post" no protocolo HTTP para enviar o arquivo a ser enviado e o nome do arquivo é prefixado pelo @ prefix e o caminho completo é usado.
.........
Para mais itens de configuração, consulte o manual do PHP
O CURL é muito poderoso, é uma biblioteca geral, não exclusiva do PHP.
Espero que os leitores possam ganhar algo aprendendo vários exemplos clássicos de Curl nesta postagem do blog.