php - 如何在 PHP 中发送 HTTP/2 POST 请求

标签 php curl push-notification apple-push-notifications http2

我在 Sending HTTP/2 POST request in Ruby 发现了一个类似的问题 但我想用 PHP 更新我的服务器

此处描述了基于 HTTP/2 的新 Apple 推送通知 API:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/APNsProviderAPI.html

任何有 HTTP/2 经验的人都可以帮助我以 PHP 客户端的身份发出请求。

最佳答案

PHP >= 5.5.24 的 CURL 扩展支持 HTTP/2。 (自 this commit 起)

您还需要安装 libcurl(curl 函数使用的底层库)并启用 HTTP/2 支持。这意味着比 7.38.0 更新的 libcurl,但实际上,越新越好。 Libcurl 必须在编译时使用 --with-nghttp2 标志显式启用 HTTP/2 支持。

只需像平常一样使用 curl,然后设置 CURLOPT_HTTP_VERSION通过传入 CURL_HTTP_VERSION_2_0 来使用 HTTP/2 的选项。然后你将把请求升级到版本 2如果客户端和服务器都支持它。

在 PHP 5.5.24 之前,如果 libcurl 构建时支持 HTTP/2,您可以显式传入 CURL_HTTP_VERSION_2_0 的 int 值,因为 PHP 仍会将其传递给 libcurl。目前,它的值为 3 - 这不应该改变,但可以

if (!defined('CURL_HTTP_VERSION_2_0')) {
    define('CURL_HTTP_VERSION_2_0', 3);
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);

关于php - 如何在 PHP 中发送 HTTP/2 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34606801/

相关文章:

php - 在 php 中重载构造?

php - cURL 连接问题 - 错误设置证书验证位置

ios - 如何在发送时不显示推送消息的情况下运行该功能?

iPhone 应用程序 ID 和配置...如果我决定使用推送,是否会使用应用程序 ID 而不是配置 ID?

java - android 使用 parse.com api 通过推送通知实现聊天

php - 图像循环和视频循环未正确对齐

PHP 和 MySQL 安全性

php - 找不到动态类引用 PHP

php - 服务器可以阻止 curl 请求吗?

php - 使用 curl 在 PHP 中获取 HTTP 代码