【发布时间】:2018-05-18 16:10:34
【问题描述】:
您好,我在 php 中使用 apns 和 curl 发送 IOS 推送通知并收到此错误消息。
我还定义了“CURL_HTTP_VERSION_2_0”,但仍然出现此错误:
意外的 HTTP/1.x 请求:POST /3/device/
这是我的代码:
$key_file = XXXXXX';
$secret = null;
$private_key = JWKFactory::createFromKeyFile($key_file, $secret, [
'kid' => '3W6B5LQQHX',
'alg' => 'ES256',
'use' => 'sig',
]);
$payload = [
'iss' => 'RUK725A7V4',
'iat' => time(),
];
$header = [
'alg' => 'ES256',
'kid' => $private_key->get('kid'),
];
$jws = JWSFactory::createJWSToCompactJSON(
$payload, $private_key, $header
);
if (!defined('CURL_HTTP_VERSION_2_0')) {
define('CURL_HTTP_VERSION_2_0', 3);
}
$http2_server = 'https://api.development.push.apple.com';
$app_bundle_id = 'com.MD.example';
$token = $device->device_id;
$url = "{$http2_server}/3/device/{$token}";
// headers
$headers = array(
"apns-topic: {$app_bundle_id}",
'Authorization: bearer ' . $jws
);
这是 curl 实际的 curl 请求。
// other curl options
curl_setopt_array($http2ch, array(
CURLOPT_URL => $url,
CURLOPT_PORT => 443,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HEADER => 1,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0,
));
$result = curl_exec($http2ch);
【问题讨论】:
-
您找到解决方案了吗?我目前正面临这个确切的问题,并且真的找不到任何其他解决方案
-
这里也一样,你找到解决方法了吗?