Visualizzazione risultati 1 fino 4 di 4

Discussione: Richiesta HTTP2

  1. #1
    routely non è connesso Neofita
    Data registrazione
    14-07-2017
    Messaggi
    3

    Predefinito Richiesta HTTP2

    Salve, per inviare una notifica push tramite Apple Push Notification Service è necessario effettuare una richiesta HTTP2. Attualmente non riesco ad effettuarla tramite curl, questo tipo di protocollo è abilitato in altervista?

  2. #2
    darbula non è connesso AlterGuru
    Data registrazione
    24-04-2011
    Messaggi
    1,597

    Predefinito

    https://it.wikipedia.org/wiki/Notifica_push
    Per inviare una notifica push ti serve solo https (per compatibilità verso il browser chrome)..
    Vedo CloudFlare con https attivo (http2 si usa con https ma ricorda che questo non è il server di origine e cioè altervista)..
    Si le funzioni curl sono abilitate..
    1)Definisci per quale applicazione (jooomla,wordpress ecc) vuoi utilizzarlo
    2)Posta il codice privo di dati personali
    Nota* requisiti MySQL 5.6 e sblocco delle connessioni server to server per le richieste esterne al domino
    Ultima modifica di darbula : 06-01-2018 alle ore 04.01.51

  3. #3
    routely non è connesso Neofita
    Data registrazione
    14-07-2017
    Messaggi
    3

    Predefinito

    Salve darbula, grazie per la risposta, questa è la funzione che sto cercando di utilizzare:
    Codice PHP:
    /**
     * @param $http2ch          la connessione curl
     * @param $http2_server     l'url per la richiesta
     * @param $apple_cert       il percorso del certificato
     * @param $app_bundle_id    l'id dell'applicazione
     * @param $message          payload (JSON)
     * @param $token            token dispositivo
     * @return mixed            codice di stato
     */
    function sendHTTP2Push($http2ch$http2_server$apple_cert$app_bundle_id$message$token) {
     
        
    // url (endpoint)
        
    $url "{$http2_server}/3/device/{$token}";
     
        
    // certificate
        
    $cert realpath($apple_cert);
     
        
    // headers
        
    $headers = array(
            
    "apns-topic: {$app_bundle_id}",
            
    "User-Agent: My Sender"
        
    );
     
        
    // other curl options
        
    curl_setopt_array($http2ch, array(
            
    CURLOPT_URL => $url,
            
    CURLOPT_PORT => 443,
            
    CURLOPT_HTTPHEADER => $headers,
            
    CURLOPT_POST => TRUE,
            
    CURLOPT_POSTFIELDS => $message,
            
    CURLOPT_RETURNTRANSFER => TRUE,
            
    CURLOPT_TIMEOUT => 30,
            
    CURLOPT_SSL_VERIFYPEER => false,
            
    CURLOPT_SSLCERT => $cert,
            
    CURLOPT_HEADER => 1
        
    ));
     
        
    // go...
        
    $result curl_exec($http2ch);
        if (
    $result === FALSE) {
          throw new 
    Exception("Curl failed: " .  curl_error($http2ch));
        }
     
        
    // get response
        
    $status curl_getinfo($http2chCURLINFO_HTTP_CODE);
     
        return 
    $status;

    Questo è il modo in cui la utilizzo:
    Codice PHP:
    if (!defined('CURL_HTTP_VERSION_2_0')) {
      
    define('CURL_HTTP_VERSION_2_0'3);
    }
    // open connection 
    $http2ch curl_init();
    curl_setopt($http2chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_2_0);
     
    // send push
    $apple_cert '/certificates/samplepush/development.pem';
    $message '{"aps":{"alert":"Hi!","sound":"default"}}';
    $token 'dbdaeae86abcde56rtyww1859fb41b2cby053ec48987847';
    $http2_server 'https://api.development.push.apple.com'// or 'api.push.apple.com' if production
    $app_bundle_id 'it.dot.TestApp';
     
    $status sendHTTP2Push($http2ch$http2_server$apple_cert$app_bundle_id$message$token);
    echo 
    "Response from apple -> {$status}\n";
     
    // close connection
    curl_close($http2ch); 
    L'errore che ottengo è il seguente:
    Unexpected HTTP/1.x request: POST /3/device/

    Qualche suggerimento a riguardo?
    Ultima modifica di alemoppo : 10-01-2018 alle ore 09.57.25 Motivo: + [php]

  4. #4
    routely non è connesso Neofita
    Data registrazione
    14-07-2017
    Messaggi
    3

    Predefinito

    Aggiungo inoltre che non utilizzo applicazioni come Joomla o Wordpress, questo script viene richiamato dall'app iOS per inviare una notifica push ad un altro dispositivo.

    Inoltre ho già sbloccato le connessioni server to server per richieste esterne al dominio.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •