头图

在PHP中,file_get_contents函数不仅能发送简单的GET请求,还可以通过配置上下文来支持复杂的请求,如添加自定义HTTP头部和发送POST请求。这是一个轻量级且实用的方式,尤其适用于需要向API发送数据或获取数据的场景。以下是具体的实现步骤:

使用file_get_contents发送带有自定义HTTP头的GET请求

首先来看如何通过file_get_contents发送一个GET请求,并在请求中添加自定义的HTTP头部,如Content-TypeAuthorization

<?php
$url = "https://example.com/api/some-endpoint";

// 创建HTTP上下文
$context = stream_context_create(array(
    'http' => array(
        'method' => 'GET',
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer YOUR_TOKEN\r\n"
    )
));

// 发送GET请求
$response = file_get_contents($url, false, $context);

// 打印响应
var_dump($response);
?>

代码解析:

  1. 定义URL:目标API的地址。
  2. 创建HTTP上下文:通过stream_context_create创建上下文,method设置为GETheader参数指定Content-Type为JSON格式和Authorization认证信息。
  3. 发送请求并获取响应:将URL和上下文传入file_get_contents。通过设置上下文,这个GET请求将携带自定义头部信息。
  4. 输出响应var_dump用于查看服务器返回的数据。

使用file_get_contents发送带有自定义HTTP头的POST请求

接下来展示如何通过file_get_contents发送POST请求并在请求中添加自定义HTTP头部。POST请求中,我们将数据编码为JSON格式并附加到请求体。

<?php
$url = "https://example.com/api/some-endpoint";
$data = array(
    'key1' => 'value1',
    'key2' => 'value2'
);

// 将数据编码为JSON
$data_string = json_encode($data);

// 创建HTTP上下文
$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer YOUR_TOKEN\r\n" .
                    "Content-Length: " . strlen($data_string) . "\r\n",
        'content' => $data_string
    )
));

// 发送POST请求
$response = file_get_contents($url, false, $context);

// 打印响应
var_dump($response);
?>

代码解析:

  1. 定义URL和数据:指定API地址,创建要发送的数据(以数组形式表示)。
  2. 数据编码:将数组编码为JSON格式以便于传输。
  3. 创建HTTP上下文

    • method设置为POST
    • header包括Content-Type为JSON,Authorization用于认证,Content-Length计算数据的字节长度以确保服务器正确接收完整的内容。
    • content设置为编码后的JSON数据。
  4. 发送请求并获取响应:使用file_get_contents发送带有自定义头的POST请求。
  5. 输出响应var_dump显示服务器返回结果。

HTTP上下文的详细解析

参数作用解释
method指定HTTP请求方法本文中设置为GETPOST
header添加自定义头部信息使用\r\n分隔多条头部信息,可根据API需求自定义
contentPOST请求体发送的数据内容,JSON编码后放入content
Content-Length定义请求体数据的字节长度Content-Length有助于服务器确定数据完整性

请求流程

graph TD
A[定义URL与数据] --> B[创建HTTP上下文]
B --> C{指定请求方法与头部}
C --> D[指定请求体]
D --> E[发送请求并获取响应]
E --> F[解析响应]

注意事项

  • Content-Type:根据数据格式设为application/jsonapplication/x-www-form-urlencoded等。
  • Authorization:当需要认证时,带上Bearer或其他认证方式。
  • 错误处理:可以用try-catch捕获异常,确保代码的健壮性。

file_get_contents结合自定义上下文是PHP中简洁的HTTP请求方式,通过合理设置methodheader,可以实现GET和POST等不同请求,适合简单API交互。


蓝易云
33 声望3 粉丝