用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

PHP实现网络请求的方法总结

2022-08-07 作者: 李浩举报

[php]代码库

$html = file_get_contents('http://www.baidu.com');
print_r($http_response_header);
$fp = fopen('http://www.baidu.com', 'r');
print_r(stream_get_meta_data($fp));
fclose($fp);
$url = 'http://192.168.1.1/test.php';
$data = array(
    'keyword' => 'test data',
);
$content = http_build_query($data);
$content_length = strlen($content);
$options = array(
    'http' => array(
        'method' => 'post',
        'header' =>
        "content-type: application/x-www-form-urlencoded\r\n" .
        "content-length: $content_length\r\n",
        'content' => $content
    )
);
echo file_get_contents($url, false, stream_context_create($options));
<?php
function geturl($url){
        $headerarray =array("content-type:application/json;","accept:application/json");
        $ch = curl_init();
        curl_setopt($ch, curlopt_url, $url);
        curl_setopt($ch, curlopt_ssl_verifypeer, false); 
        curl_setopt($ch, curlopt_ssl_verifyhost, false); 
        curl_setopt($ch, curlopt_returntransfer, 1);
        curl_setopt($ch,curlopt_httpheader,$headerarray);
        $output = curl_exec($ch);
        curl_close($ch);
        $output = json_decode($output,true);
        return $output;
}
  
  
function posturl($url,$data){
        $data  = json_encode($data);    
        $headerarray =array("content-type:application/json;charset='utf-8'","accept:application/json");
        $curl = curl_init();
        curl_setopt($curl, curlopt_url, $url);
        curl_setopt($curl, curlopt_ssl_verifypeer, false);
        curl_setopt($curl, curlopt_ssl_verifyhost,false);
        curl_setopt($curl, curlopt_post, 1);
        curl_setopt($curl, curlopt_postfields, $data);
        curl_setopt($curl,curlopt_httpheader,$headerarray);
        curl_setopt($curl, curlopt_returntransfer, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode($output,true);
}
  
  
function puturl($url,$data){
    $data = json_encode($data);
    $ch = curl_init(); //初始化curl句柄 
    curl_setopt($ch, curlopt_url, $url); //设置请求的url
    curl_setopt ($ch, curlopt_httpheader, array('content-type:application/json'));
    curl_setopt($ch, curlopt_returntransfer,1); //设为true把curl_exec()结果转化为字串,而不是直接输出 
    curl_setopt($ch, curlopt_customrequest,"put"); //设置请求方式
    curl_setopt($ch, curlopt_postfields, $data);//设置提交的字符串
    $output = curl_exec($ch);
    curl_close($ch);
    return json_decode($output,true);
}
  
function delurl($url,$data){
    $data  = json_encode($data);
    $ch = curl_init();
    curl_setopt ($ch,curlopt_url,$put_url);
    curl_setopt ($ch, curlopt_httpheader, array('content-type:application/json'));
    curl_setopt ($ch, curlopt_returntransfer, 1);
    curl_setopt ($ch, curlopt_customrequest, "delete");   
    curl_setopt($ch, curlopt_postfields,$data);
    $output = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($output,true);
}
  
function patchurl($url,$data){
    $data  = json_encode($data);
    $ch = curl_init();
    curl_setopt ($ch,curlopt_url,$url);
    curl_setopt ($ch, curlopt_httpheader, array('content-type:application/json'));
    curl_setopt ($ch, curlopt_returntransfer, 1);
    curl_setopt ($ch, curlopt_customrequest, "patch");  
    curl_setopt($ch, curlopt_postfields,$data);     //20170611修改接口,用/id的方式传递,直接写在url中了
    $output = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($output);
    return $output;
}
?>
function sendcurl($url, $data = null,$method='post')
{
    $method=strtoupper($method);
    $start_wdmcurl_time = microtime(true);
  
    $header = array(' application/x-www-form-urlencoded');
    $ch = curl_init();
    curl_setopt($ch, curlopt_url, $url);
    curl_setopt($ch, curlopt_failonerror, false);
    // https 请求
    if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https")
    {
        curl_setopt($ch, curlopt_ssl_verifypeer, false);
        curl_setopt($ch, curlopt_ssl_verifyhost, false);
    }
    if($method=='get'){
        if($data && is_array($data) && count($data)>0 ){
            $url.="?".http_build_query($data);
        }
        curl_setopt($ch, curlopt_url, $url);
    }elseif($method=='post'){
        curl_setopt($ch, curlopt_post, 1);
        curl_setopt($ch, curlopt_postfields, $data);
        if (is_array($data) && count($data)>0)
        {
            curl_setopt($ch, curlopt_post, true);
            $ispostmultipart = false;
            foreach ($data as $k => $v)
            {
                if ('@' == substr($v, 0, 1))
                {
                    $ispostmultipart = true;
                    break;
                }
            }
            unset($k, $v);
            if ($ispostmultipart) {
                curl_setopt($ch, curlopt_postfields, $data);
            } else {
                curl_setopt($ch, curlopt_postfields, http_build_query($data));
            }
        }
    }elseif(in_array($method,['put','delete','patch'])){
        curl_setopt($ch, curlopt_customrequest,$method);
        curl_setopt($ch, curlopt_postfields, $data);
    }
    curl_setopt($ch, curlopt_returntransfer, 1);
    curl_setopt($ch,curlopt_httpheader,$header);
    $reponse = curl_exec($ch);
    curl_close($ch);
    return $reponse;
}
composer require guzzlehttp/guzzle
$client = new \guzzlehttp\client();
$response = $client->request('get', 'https://api.github.com/repos/guzzle/guzzle');
  
echo $response->getstatuscode(); // 200
echo $response->getheaderline('content-type'); // 'application/json; charset=utf8'
echo $response->getbody(); // '{"id": 1420053, "name": "guzzle", ...}'
  
// send an asynchronous request.
$request = new \guzzlehttp\psr7\request('get', 'http://httpbin.org');
$promise = $client->sendasync($request)->then(function ($response) {
    echo 'i completed! ' . $response->getbody();
});
  
$promise->wait();


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...