使用php发送get和post请求url的代码段

yuxi7个月前代码段687

方法1: file_get_contents方法get方式获取网页内容:

<?php
$url='http://luckxi.cn/';//请求地址url
$html = file_get_contents($url);
echo $html;//输出内容
?>

方法2: 用fopen打开url并以get方式获取网页内容:

<?php
// 定义文件指针$fp,使用fopen函数打开一个URL或文件,并设置模式为只读'r'
$fp = fopen($url, 'r');

// 使用stream_get_meta_data获取流的元信息,这可以用来检查是否成功打开文件/URL
stream_get_meta_data($fp);

// 初始化一个空字符串$result用于存储从文件/URL读取的内容
$result = '';

// 当文件指针没有到达文件末尾时循环执行
while(!feof($fp)) {
    // 每次从文件中读取最多1024字节的数据,并追加到$result变量中
    $result .= fgets($fp, 1024);
}

// 输出完整的文件/URL内容
echo "url body: $result";

// 关闭文件指针$fp
fclose($fp);
?>

方法3:用file_get_contents函数,以post方式获取url内容

<?php
$data = array ('foo' => 'bar');
$data = http_build_query($data);
 
$opts = array (
‘http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencodedrn",
"Content-Length: " . strlen($data) . "rn",
'content' => $data
)
);
$context = stream_context_create($opts);
$html = file_get_contents('http://luckxi.cn/e/admin/test.html', false, $context);
 echo $html;
?>

方法4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen(注意需要 PHP.ini 中 allow_url_fopen 选项开启)

<?php
// 创建一个包含键值对的数组
$data = array ('foo' => 'bar');

// 将数组转换成适合HTTP POST请求的查询字符串格式
$data = http_build_query($data);

// 设置HTTP选项
$opts = array (
    // HTTP协议相关的选项
    'http' => array (
        // 设置请求方法为POST
        'method' => 'POST',
        
        // 设置请求头
        // 注意:这里的头信息格式有误,正确的格式应该是使用换行符("\r\n")而不是("rn")
        'header'=> "Content-type: application/x-www-form-urlencoded\r\n", // 设置Content-Type
        'Content-Length: ' . strlen($data) . "\r\n", // 设置Content-Length
       
        // 设置POST请求体内容
        'content' => $data
    )
);

// 创建一个基于所提供的选项的流上下文
$context = stream_context_create($opts);

// 使用file_get_contents发起HTTP POST请求并获取返回的内容
// 第二个参数false表示使用自定义上下文
// 第三个参数是上面创建的上下文
$html = file_get_contents('http://luckxi.cn/e/admin/test.html', false, $context);

// 输出HTML内容
echo $html;
?>

  方法5:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

<?php
function HTTP_Post($URL, $data, $cookie, $referrer = "")
{
    // 解析给定的URL,返回一个包含scheme、host、port、path等组件的数组
    $URL_Info = parse_url($URL);

    // 构建referrer,如果没有提供则设置一个默认值
    if ($referrer == "") { // 如果没有提供referrer,则使用默认值"111"
        $referrer = "111"; // 注意:这里硬编码了一个referrer值,实际使用时应根据需求调整
    }

    // 将$data数组转换成适合HTTP POST请求的字符串格式
    foreach ($data as $key => $value) {
        $values[] = "$key=" . urlencode($value); // 对每个值进行URL编码
    }
    $data_string = implode("&", $values); // 使用"&"连接键值对

    // 查找所需的端口,如果没有指定,则使用标准端口(80)
    if (!isset($URL_Info["port"])) {
        $URL_Info["port"] = 80; // 默认HTTP端口
    }

    // 构建POST请求的头部信息
    $request = "POST " . $URL_Info["path"] . " HTTP/1.1\r\n"; // 请求行
    $request .= "Host: " . $URL_Info["host"] . "\r\n"; // 主机头
    $request .= "Referer: " . $referrer . "\r\n"; // Referer头
    $request .= "Content-type: application/x-www-form-urlencoded\r\n"; // 内容类型
    $request .= "Content-length: " . strlen($data_string) . "\r\n"; // 内容长度
    $request .= "Connection: close\r\n"; // 连接方式

    // 添加Cookie头
    $request .= "Cookie: " . $cookie . "\r\n";

    // 添加一个空行来结束头部信息
    $request .= "\r\n";

    // 添加POST请求体
    $request .= $data_string . "\r\n";

    // 打开与目标主机的socket连接
    $fp = fsockopen($URL_Info["host"], $URL_Info["port"]);

    // 向socket写入完整的请求
    fputs($fp, $request);

    // 读取响应直到文件结束符
    while (!feof($fp)) {
        $result .= fgets($fp, 1024); // 每次读取最多1024字节
    }

    // 关闭socket连接
    fclose($fp);

    // 返回响应结果
    return $result;
}
?>

方法6:使用curl库,使用curl库之前(注意需要查看一下php.ini是否已经打开了curl扩展)

<?php
// 初始化一个新的cURL会话
$ch = curl_init();

// 设置超时时间为5秒
$timeout = 5;

// 设置cURL选项,包括请求的URL
curl_setopt($ch, CURLOPT_URL, 'http://luckxi.cn/');

// 设置选项CURLOPT_RETURNTRANSFER,使cURL执行结果作为字符串返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 设置选项CURLOPT_CONNECTTIMEOUT,指定连接到服务器的最大时间(单位:秒)
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

// 执行cURL会话
$file_contents = curl_exec($ch);

// 关闭cURL会话
curl_close($ch);

// 输出获取到的页面内容
echo $file_contents;
?>


Tips:值得注意的是,通常在发送请求的时候要考虑一下编码的问题,尤其是在处理中文和特殊符号,另外尽量是加上请求头和cookie,希望能帮到您~