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

yizhihongxing

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日

相关文章

  • 微信小程序开发搜索功能实现(前端+后端+数据库)

    下面是详细讲解微信小程序开发搜索功能实现的攻略。 一、前置准备 1.创建小程序 首先需要在微信公众平台上创建一个小程序,得到小程序的AppID和AppSecret,同时设置小程序的服务器域名和接口域名。 2.搭建后台服务器 搭建后台服务器需要具备一定的后端开发经验,可以使用Node.js或其他后端技术栈,在服务器上搭建一个API接口,用于提供搜索功能的数据请…

    PHP 2023年5月23日
    00
  • PHP curl模拟登录带验证码的网站

    关于“PHP curl模拟登录带验证码的网站”的攻略,我会从以下几个步骤进行详细讲解: 1.分析登录流程,确定接口参数2.下载验证码图片并识别3.模拟登录请求并处理响应4.进一步处理登录后的操作 下面我会详细介绍每个步骤的具体实现方法和示例说明。 1.分析登录流程,确定接口参数 首先我们需要分析该网站的登录流程并确定需要提交的接口参数。一般来说,登录接口都会…

    PHP 2023年5月23日
    00
  • PHP支付系统设计与典型案例分享

    PHP支付系统设计与典型案例分享 了解支付系统的基础知识 在设计支付系统之前,我们需要了解支付系统的基础知识和相关法律法规。 支付系统的组成 支付系统由商户、支付网关、银行三部分组成。 商户:表示需要接入支付系统的商家。 支付网关:表示支付系统提供商的系统,负责处理各种支付请求并将其转发到相应的银行进行扣款或汇款。 银行:表示接收支付网关的支付请求并执行相应…

    PHP 2023年5月24日
    00
  • php字符串截取函数mb_substr用法实例分析

    以下是关于”php字符串截取函数mb_substr用法实例分析”的完整攻略: 什么是mb_substr函数? PHP中的mb_substr()函数是用于截取多字节字符集中的字符串的函数。这个函数与PHP内置的substr()函数很相似,但是有一个不同点,即mb_substr可以正确截取中文、日文等字符。 mb_substr函数的语法 要使用mb_substr…

    PHP 2023年5月26日
    00
  • PHP 数组基本操作方法详解

    PHP 数组基本操作方法详解 本文将介绍 PHP 数组的基本操作方法,包括如何创建、访问、修改和删除数组中的元素。同时也会介绍如何合并和分割数组,以及如何遍历和排序数组。 创建数组 在 PHP 中创建数组很简单,有以下两种方法: 使用 array() 函数: php$arr1 = array(1, 2, 3); 使用 [] 符号: php$arr2 = [1…

    PHP 2023年5月26日
    00
  • php 执行系统命令的方法

    PHP提供了多种方法执行操作系统的命令,常用的有以下几种: shell_exec() shell_exec() 函数执行命令并将结果作为字符串返回,其语法如下: shell_exec ( string $command ) $command 参数是要执行的命令,函数返回命令执行结果。如果命令执行失败或没有输出结果,则返回NULL。示例如下: // 执行 ls…

    PHP 2023年5月30日
    00
  • PHP中字符安全过滤函数使用小结

    下面详细讲解“PHP中字符安全过滤函数使用小结”这个话题。 标题 PHP中字符安全过滤函数使用小结 简介 在开发 PHP 应用时,经常需要处理用户输入的数据。为了避免安全漏洞,我们需要对用户输入的数据进行过滤。本文将介绍几个 PHP 中常用的字符安全过滤函数,帮助大家构建更加安全的应用。 htmlspecialchars htmlspecialchars()…

    PHP 2023年5月26日
    00
  • 我的论坛源代码(一)

    非常感谢您对网站的关注。以下是《我的论坛源代码(一)》的完整攻略: 我的论坛源代码(一) – 完整攻略 初识论坛 什么是论坛? 论坛(英文名:Forum),又称BBS(Bulletin Board System,中文名:公告牌), 是一种以电子化形式进行交流、讨论的平台。 论坛作为一种网络社交方式,已经存在了几十年,它可以促进人与人之间的交流、促进知识的共享…

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