HttpClient php类库

HttpClient php类库

GET行为比较简单,POST比较复杂一些。这里提供两种方法供选择:

第一:手写代码
第二:利用HttpClient php类库

第一种方法:代码如下:
    $flag = 0;   
    //要post的数据    
$argv = array(   
     'var1'=>'abc',    
     'var2'=>'你好吗');    
//构造要post的字符串    
foreach ($argv as $key=>$value) {    
     if ($flag!=0) {   
             $params .= "&";    
             $flag = 1;    
     }    
     $params.= $key."="; $params.= urlencode($value);    
     $flag = 1;    
     }    
     $length = strlen($params);   
         //创建socket连接    
     $fp = fsockopen("127.0.0.1",80,$errno,$errstr,10) or exit($errstr."--->".$errno);    
     //构造post请求的头    
     $header = "POST /mobile/try.php HTTP/1.1";    
     $header .= "Host:127.0.0.1";    
     $header .= "Referer:/mobile/sendpost.php";    
     $header .= "Content-Type: application/x-www-form-urlencoded";    
     $header .= "Content-Length: ".$length."";    
     $header .= "Connection: Close";   
     //添加post的字符串    
     $header .= $params."";    
     //发送post的数据    
     fputs($fp,$header);    
     $inheader = 1;    
     while (!feof($fp)) {   
             $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据    
             if ($inheader && ($line == "\n" || $line == "")) {   
                 $inheader = 0;    
             }    
             if ($inheader == 0) {    
                 echo $line;    
             }    
     }    
fclose($fp);    
?>

第二种方法是:使用httpclient类,代码如下:
$pageContents = HttpClient::quickPost('http://example.com/someForm', array(   
    'name' => 'Some Name',   
    'email' => '[email protected]'  
));

使用附件的类库,也可以去官方下载最新的类库,官方地址为:http://scripts.incutio.com/httpclient/index.php
附加一些php httpclient的其他几个用法
静态方法获取网页
$pageContents = HttpClient::quickGet('http://example.com/');

Get方法获取
$client = new HttpClient('example.com');   
if (!$client->get('/')) {   
    die('An error occurred: '.$client->getError());   
}   
$pageContents = $client->getContent();

带调试的Get方法获取
$client = new HttpClient('example.com');   
$client->setDebug(true);   
if (!$client->get('/')) {   
    die('An error occurred: '.$client->getError());   
}   
$pageContents = $client->getContent();

带自动转向的Get方法
$client = new HttpClient('www.amazon.com');   
$client->setDebug(true);   
if (!$client->get('/')) {   
    die('An error occurred: '.$client->getError());   
}   
$pageContents = $client->getContent();

检查页面是否存在
$client = new HttpClient('example.com');   
$client->setDebug(true);   
if (!$client->get('/thispagedoesnotexist')) {   
    die('An error occurred: '.$client->getError());   
}   
if ($client->getStatus() == '404') {   
    echo 'Page does not exist!';   
}   
$pageContents = $client->getContent();

伪造客户端
$client = new HttpClient('example.com');   
$client->setDebug(true);   
$client->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207');   
if (!$client->get('/')) {   
    die('An error occurred: '.$client->getError());   
}   
$pageContents = $client->getContent();

登录验证并请求一个网页
$client = new HttpClient('example.com');   
$client->post('/login.php', array(   
    'username' => 'Simon',   
    'password' => 'ducks'  
));   
if (!$client->get('/private.php')) {   
    die('An error occurred: '.$client->getError());   
}   
$pageContents = $client->getContent();

HTTP授权
$client = new HttpClient('example.com');   
$client->setAuthorization('Username', 'Password');   
if (!$client->get('/')) {   
    die('An error occurred: '.$client->getError());   
}   
$pageContents = $client->getContent();

输出头信息
$client = new HttpClient('example.com');   
if (!$client->get('/')) {   
    die('An error occurred: '.$client->getError());   
}   
print_r($client->getHeaders());

设置一个域内重定向最多次数
$client = new HttpClient('www.amazon.com');   
$client->setDebug(true);   
$client->setMaxRedirects(3);   
$client->get('/');


你可能感兴趣的:(php)