意外的HTTP / 1.x请求:POST / 3 / device / XXXX [英] Unexpected HTTP/1.x request: POST /3/device/XXXX
本文介绍了意外的HTTP / 1.x请求:POST / 3 / device / XXXX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用apns和curl在php中发送IOS推送通知,并收到此错误消息。
Hi i am sending IOS push notifications using apns and curl in php and getting this error message.
我还定义了'CURL_HTTP_VERSION_2_0',但仍然收到此错误:
I also define 'CURL_HTTP_VERSION_2_0' but still getting this error:
意外的HTTP / 1.x请求:POST / 3 / device /
Unexpected HTTP/1.x request: 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
);
这是实际的卷曲请求。
// 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);
推荐答案
请启用您的 http2
如果您已经启用了http2对curl的支持,也请参见 phpinfo()。
Also see the phpinfo() if you have already enabled the http2 support for curl or not.
之后,只需将您的 CURLOPT_HTTP_VERSION
curl选项设置为3
After that just set your CURLOPT_HTTP_VERSION
curl option with 3
这篇关于意外的HTTP / 1.x请求:POST / 3 / device / XXXX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文