Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

BlackBerry Push Development

Reply
Trusted Contributor
foufou
Posts: 109
Registered: ‎11-15-2011
My Device: blackberry 9800

server-side problemt: PHP Push message to Blackberry

Hi,

 

I am using the client side code from http://supportforums.blackberry.com/t5/BlackBerry-Push-Development/Simplified-BIS-Push-client-sample... on the BlackBerry Developer Support forums.

I am able to get a registration response from the BlackBerry push server, however I am unable to get any push messages from the BlackBerry push server. The server side code is built in PHP. When I click on the button send, I obtain an error.

 

Can any one help me 

 

 

 

 ---------------error---------------------------------------------
        An XML parser error has occured
        Invalid document end
        Response
    ---------------PHP code------------------------------------------------------------------
        <?php
        if ($_POST) {
            // APP ID provided by RIM
            $appid = 'xxxxxxxxxx';
            // Password provided by RIM
            $password = 'xxxxxxxxxxxxxxxx';
            
            //Deliver before timestamp
            $deliverbefore = gmdate('Y-m-d\TH:i:s\Z', strtotime('+5 minutes'));
            
            //An array of address must be in PIN format or "push_all"
            $addresstosendto[] = 'push_all';
            
            $addresses = '';
            foreach ($addresstosendto as $value) {
                $addresses .= '<address address-value="' . $value . '"/>';
            }
            
            // create a new cURL resource
            $err = false;
            $ch = curl_init();
            $messageid = microtime(true);
        
            $data = '--mPsbVQo0a68eIL3OAxnm'. "\r\n" .
            'Content-Type: application/xml; charset=UTF-8' . "\r\n\r\n" .
            '<?xml version="1.0"?>
            <!DOCTYPE pap PUBLIC "-//WAPFORUM//DTD PAP 2.1//EN" "http://www.openmobilealliance.org/tech/DTD/pap_2.1.dtd">
            <pap>
            <push-message push-id="' . $messageid . '" deliver-before-timestamp="' . $deliverbefore . '" source-reference="' . $appid . '">'
            . $addresses .
            '<quality-of-service delivery-method="unconfirmed"/>
            </push-message>
            </pap>' . "\r\n" .
            '--mPsbVQo0a68eIL3OAxnm' . "\r\n" .
            'Content-Type: text/plain' . "\r\n" .
            'Push-Message-ID: ' . $messageid . "\r\n\r\n" .
            stripslashes($_POST['message']) . "\r\n" .
            '--mPsbVQo0a68eIL3OAxnm--' . "\n\r";
        
            // set URL and other appropriate options
            curl_setopt($ch, CURLOPT_URL, "https://pushapi.eval.blackberry.com/mss/PD_pushRequest");
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_USERAGENT, "Hallgren Networks BB Push Server/1.0");
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, $appid . ':' . $password);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/related; boundary=mPsbVQo0a68eIL3OAxnm; type=application/xml", "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2", "Connection: keep-alive"));
        
            // grab URL and pass it to the browser
            $xmldata = curl_exec($ch);
            
            // close cURL resource, and free up system resources
            curl_close($ch);
            
            //Start parsing response into XML data that we can read and output
            $p = xml_parser_create();
            xml_parse_into_struct($p, $xmldata, $vals);
            $errorcode = xml_get_error_code($p);
            if ($errorcode > 0) {
                $err = true;
            }
            xml_parser_free($p);
        
            echo 'Our PUSH-ID: ' . $messageid . "<br \>\n";
            if (!$err && $vals[1]['tag'] == 'PUSH-RESPONSE') {
                echo 'PUSH-ID: ' . $vals[1]['attributes']['PUSH-ID'] . "<br \>\n";
                echo 'REPLY-TIME: ' . $vals[1]['attributes']['REPLY-TIME'] . "<br \>\n";
                echo 'Response CODE: ' . $vals[2]['attributes']['CODE'] . "<br \>\n";
                echo 'Response DESC: ' . $vals[2]['attributes']['DESC'] . "<br \> \n";
            } elseif ($err) {
                echo '<p>An XML parser error has occured</p>' . "\n";
                echo '<pre>' . xml_error_string($errorcode) ."</pre>\n";
                echo '<p>Response</p>' . "\n";
                echo '<pre>' . $xmldata . '</pre>' . "\n"
            } else {
                echo '<p>An error has occured</p>' . "\n";
                echo 'Error CODE: ' . $vals[1]['attributes']['CODE'] . "<br \>\n";
                echo 'Error DESC: ' . $vals[1]['attributes']['DESC'] . "<br \>\n";
            }
        } else {
            showhtml();
        }
        
        function showhtml() {
            ?>
        <html>
        <head><title>Blackberry PUSH Bishes!!!</title></head>
        <body>
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <p>Message to push:</p>
        <textarea name="message" rows="30" cols="50"></textarea>
        <p></p><input type="submit" value="Push Data"></p>
        </form>
        </body>
        </html>
        <?php
        }
        ?>

 



Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Re: server-side problemt: PHP Push message to Blackberry

I am having a similar issue...and all I did was change the credentials. Did you find a solution to this?
Trusted Contributor
foufou
Posts: 109
Registered: ‎11-15-2011
My Device: blackberry 9800

Re: server-side problemt: PHP Push message to Blackberry

[ Edited ]

I didn't find a solution or an answer to my questions. When  you changed the credentials, did you get notification in the device? What do you mean changed  the credentials?

Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Re: server-side problemt: PHP Push message to Blackberry

It worked in the evaluation mode and just recently got granted approval for production and new credentials i.e. password app id. url. All I did was update the credentials and now I get this error
Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Re: server-side problemt: PHP Push message to Blackberry

The error is due to not getting back a response from RIM...I think there SERVICE is DOWN
Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Re: server-side problemt: PHP Push message to Blackberry

have you tried accessing the servers PPGL URL? its down I get a 404 when I try
Trusted Contributor
foufou
Posts: 109
Registered: ‎11-15-2011
My Device: blackberry 9800

Re: server-side problemt: PHP Push message to Blackberry

When I access to PPG Base URL, I obtained just white page

Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Re: server-side problemt: PHP Push message to Blackberry

Are you in production or evaluation?
Trusted Contributor
foufou
Posts: 109
Registered: ‎11-15-2011
My Device: blackberry 9800

Re: server-side problemt: PHP Push message to Blackberry

in evaluation I just start to test the  push 

Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Re: server-side problemt: PHP Push message to Blackberry

Well...I am not on eval any more. But I got an email stating that the eval service would be upgrading on the 15th... either the time is off on their clocks or they started early!