2017-12-05 7 views
3

こんにちは、phpでapnsとcurlを使用してIOSプッシュ通知を送信し、このエラーメッセージが表示されます。予期せぬHTTP/1.x要求:POST/3/device/XXXXXXXXXXXXXXXXXXXXXXXXXXXX

私も 'CURL_HTTP_VERSION_2_0'を定義していますが、まだこのエラーが発生しています。

 $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); 

私はこのエラー予期しないHTTP/1.1リクエスト取得しています:POST/3 /デバイスを/

答えて

0

コマンドにカールを使用するときにPHPのカールを使用したが、決してとき、私は同じUnexpected HTTP/1.x request: POST /3/device/XXXX応答を得ていましたライン。

sudo apachectl restartでApache Webサーバーを再起動するだけで問題が解決しました。

関連する問題