php发送get、post请求的6种方法简明总结

PHP发送GET、POST请求的6种方法简明总结

在PHP中发送HTTP请求是比较常见的需求,本文将总结6种常用的方式,包括使用cURL和不使用cURL的方法。

1. 使用file_get_contents函数发送GET请求

file_get_contents函数可以读取文件内容,也可以用于发送GET请求。下面是一个例子:

$url = 'https://www.example.com/api/getdata?id=123';
$response = file_get_contents($url);
echo $response;

这里我们发送了一个GET请求,并将结果直接输出。需要注意的是,file_get_contents只适用于简单的GET请求,并不适用于POST请求。

2. 使用file_get_contents函数发送POST请求

使用file_get_contents函数发送POST请求需要结合stream_context_create函数来设置HTTP头。

$url = 'https://www.example.com/api/postdata';
$data = http_build_query(array('id' => '123', 'name' => '张三'));

$options = array('http' => array(
    'header'  => 'Content-Type: application/x-www-form-urlencoded\r\n' .
                 'Content-Length: ' . strlen($data) . '\r\n' .
                 'User-Agent:MyAgent/1.0\r\n',
    'method'  => 'POST',
    'content' => $data
));

$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);

echo $response;

这里我们设置了HTTP头,包括Content-Type和Content-Length等字段,然后将请求内容通过content字段传递给服务器。

3. 使用cURL库发送GET请求

cURL是一个自由的跨平台支持多种通信协议的库。curl_init函数创建一个cURL对象,curl_setopt设置请求选项,curl_exec执行请求操作,curl_close释放cURL资源。

$url = 'https://www.example.com/api/getdata?id=123';
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;

4. 使用cURL库发送POST请求

要发送POST请求,我们需要设置curl_setopt的CURLOPT_POST选项为true,然后再设置CURLOPT_POSTFIELDS选项为POST请求的数据。

$url = 'https://www.example.com/api/postdata';
$data = array('id' => '123', 'name' => '张三');
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;

5. 使用fsockopen函数发送GET请求

fsockopen函数可以用于打开一个网络连接,可以使用它来发送HTTP请求。

$url = 'https://www.example.com/api/getdata?id=123';
$parsed_url = parse_url($url);

$fp = fsockopen($parsed_url['host'], 80, $errno, $errstr, 10);
if (!$fp) {
    echo "Error: $errno - $errstr";
} else {
    $out = "GET {$parsed_url['path']}?{$parsed_url['query']} HTTP/1.1\r\n";
    $out .= "Host: {$parsed_url['host']}\r\n";
    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp,$out);
    $response = '';
    while (!feof($fp)) {
        $response .= fgets($fp, 128);
    }
    fclose($fp);
    echo $response;
}

6. 使用fsockopen函数发送POST请求

发送POST请求同样需要手动构造HTTP请求头和请求体。

$url = 'https://www.example.com/api/postdata';
$data = array('id' => '123', 'name' => '张三');
$parsed_url = parse_url($url);

$fp = fsockopen($parsed_url['host'], 80, $errno, $errstr, 10);
if (!$fp) {
    echo "Error: $errno - $errstr";
} else {
    $data = http_build_query($data);

    $out = "POST {$parsed_url['path']} HTTP/1.1\r\n";
    $out .= "Host: {$parsed_url['host']}\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= "Content-Length: " . strlen($data) . "\r\n";
    $out .= "Connection: Close\r\n\r\n";
    $out .= $data;

    fwrite($fp,$out);
    $response = '';
    while (!feof($fp)) {
        $response .= fgets($fp, 128);
    }
    fclose($fp);
    echo $response;
}

上述6种方法都是发起HTTP请求的常用方式,选择使用哪种方式需要根据你的项目需求和个人习惯来选择。

示例1:使用cURL库发送GET请求

function curl_get($url) {
    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($curl);
    curl_close($curl);

    return $response;
}

$url = 'https://www.example.com/api/getdata?id=123';
$response = curl_get($url);
echo $response;

我们自定义了一个curl_get函数,它接收一个URL作为参数,并使用cURL库发送GET请求来获取返回结果。

示例2:使用fsockopen函数发送POST请求

function fsockopen_post($url, $data) {
    $parsed_url = parse_url($url);

    $fp = fsockopen($parsed_url['host'], 80, $errno, $errstr, 10);
    if (!$fp) {
        return "Error: $errno - $errstr";
    } else {
        $data = http_build_query($data);

        $out = "POST {$parsed_url['path']} HTTP/1.1\r\n";
        $out .= "Host: {$parsed_url['host']}\r\n";
        $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $out .= "Content-Length: " . strlen($data) . "\r\n";
        $out .= "Connection: Close\r\n\r\n";
        $out .= $data;

        fwrite($fp, $out);
        $response = '';
        while (!feof($fp)) {
            $response .= fgets($fp, 128);
        }
        fclose($fp);
        return $response;
    }
}

$url = 'https://www.example.com/api/postdata';
$data = array('id' => '123', 'name' => '张三');
$response = fsockopen_post($url, $data);
echo $response;

我们自定义了一个fsockopen_post函数,它接收一个URL和一个数据数组作为参数,并使用fsockopen函数发送POST请求来获取返回结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php发送get、post请求的6种方法简明总结 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • PHP中的print_r 与 var_dump 输出数组

    当我们在编写 PHP 程序时,经常遇到需要查看数组中保存的数据信息的情形。这时我们可以使用 PHP 提供的两种函数 print_r() 和 var_dump() 来输出数组,并且以不同形式显示详细的数组信息。 print_r 使用方法 print_r() 函数可以打印格式化后的数据,不仅可以用于数组,还可以用于对象等其他类型的数据。 mixed print_…

    PHP 2023年5月26日
    00
  • php IP转换整形(ip2long)的详解

    下面是关于“php IP转换整形(ip2long)的详解”的完整攻略。 标题 PHP中IP转换整形函数ip2long的使用方法详解 简介 在开发中,我们有时需要将IP地址转换为整形,或是将整形转换为IP地址。使用PHP中的ip2long函数可以很轻松地完成这个转换过程。本文将对php中的IP转换整形函数ip2long进行详细的讲解,并提供两个示例说明,以便读…

    PHP 2023年5月27日
    00
  • php实现简易计算器

    让我来详细讲解一下如何实现用 PHP 编写简易计算器的攻略。 步骤一:创建 HTML 页面 首先,我们需要在项目中创建一个 HTML 页面,用于接收用户的输入和显示计算结果。可以正常的使用 HTML5 语法,建议使用表单元素来接收用户的输入。需要注意的是,我们的 HTML 页面需要引入一个 PHP 的处理文件,代码如下: <!DOCTYPE html&…

    PHP 2023年5月23日
    00
  • PHP 转义使用详解

    PHP 转义使用详解 在 PHP 中使用转义字符通常是为了处理一些特殊字符,比如引号、反斜杠等,以便在字符串中正常显示这些字符。在本文中,我们将详细介绍 PHP 转义字符的使用方法和注意事项。 转义字符的种类 PHP 支持多种转义字符,如下表所示: 转义序列 描述 \ 反斜线 \’ 单引号 \” 双引号 \n 换行符 \r 回车符 \t 制表符 \0 空字符…

    PHP 2023年5月23日
    00
  • php.ini 启用disable_functions提高安全

    PHP是一种动态语言,这也意味着它非常灵活,但这也会导致某些违规代码或者故意恶意的攻击行为得以执行。通过禁用一些敏感函数,如exec(),system()和shell_exec()等,可以提高服务器安全性,但这同时也可能会影响到你的应用程序。 下面是在php.ini中启用disable_functions来提高安全的完整攻略: 1. 找到php.ini文件 …

    PHP 2023年5月27日
    00
  • ie与session丢失(新窗口cookie丢失)实测及解决方案

    IE与Session丢失(新窗口cookie丢失)实测及解决方案 背景 在使用IE浏览器时,会经常遇到在新窗口打开网页时,原本存在的session信息和cookie信息丢失的情况,这不仅会给用户带来不便,也会影响网站的正常运转。 实测过程 为了验证这个问题,我们采用了以下步骤进行实测: 在IE浏览器中打开网站,并登录成功。此时,我们可以看到浏览器中已经设置了…

    PHP 2023年5月27日
    00
  • php中ob函数缓冲机制深入理解

    PHP中ob函数缓冲机制深入理解 什么是ob缓冲机制 在PHP中,当我们执行类似于输出到页面的操作时,会直接将输出内容发送到浏览器,然后继续执行后面的代码。这样会因为输出时的阻塞,导致页面的加载速度变慢。为了解决这个问题,PHP提供了缓冲机制来减少输出造成的阻塞,提高页面的加载速度。 摘自官方文档的说明: 输出缓冲控制函数用于控制 PHP 脚本执行时的输出缓…

    PHP 2023年5月23日
    00
  • php 删除一维数组中某一个值元素的操作方法

    要删除一个一维数组中的某一元素,可采取以下步骤: 使用内置函数 unset() 删除对应下标的元素。 若需保持下标连续,可使用内置函数 array_values() 重新索引数组。 下面分别对这两个步骤做详细讲解,并提供两条示例作为参考: 1. 使用unset()删除元素 unset() 函数可用于删除PHP中的变量。即使它是数组中的元素,该函数也可以使用。…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部