意外的HTTP / 1.x请求:POST / 3 / device / XXXX [英] Unexpected HTTP/1.x request: POST /3/device/XXXX

查看:817
本文介绍了意外的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆