When performing a push using the application-level reliability mode, the BlackBerry MDS or the BlackBerry MDS Simulator occasionally fails to accept the push and responds with error 400 and the following:
The BlackBerry Enterprise Server or device software version is earlier than 4.0.
Note: BlackBerry Enterprise Server and BlackBerry Device Software 4.0 and later use the application-level reliability mode.
Upgrade the BlackBerry Enterprise Server and device software to version 4.0 or later, or set the X-Rim-Push-Reliability HTTP header to Application-Preferred in order to use the application-level reliability mode.
The user has not used the BlackBerry Browser since BlackBerry MDS was started, or the application did not make an HTTP request and did not set the appropriate headers to inform the BlackBerry MDS of its abilities.
Request a web page using the BlackBerry Browser, or configure your application to make an HTTP request with required headers. For more information, see this article.
Note: BlackBerry MDS does not recognize if the BlackBerry device supports the application-level reliability mode until it makes an HTTP request with appropriate headers. Until this has occurred, BlackBerry MDS assumes it does not make an HTTP request and returns the error.
The push.application.reliable.ports parameter has not been added to the BlackBerry MDS rimpublic.properties file.
Configure the BlackBerry MDS or MDS Simulator with ports used with the application-level reliability mode. To do so, open the rimpublic.property file and add a push.application.reliable.ports parameter that lists the ports used for pushing data with the application-level reliability mode.
The following example shows an entry that enables port 4000 and 5000 for the application-level reliability mode:
Note: Ports listed in the above example can still be used with other reliability modes or without any reliability mode.
The application is not listening for the push connection, or the push and application are not using the same port.
Verify that the push application is pushing to the port on which the application is listening.
The application is not using MDSPushInputStream to receive the incoming data.
Use MDSPushInputStream if the application needs to support the application-level reliability mode. This allows the application to acknowledge the received data. After reading data from a push, the application should call the accept method of the MDSPushInputStream class to acknowledge it has received the data.