The specified delivery method is not possible

by Retired ‎02-17-2010 01:57 PM - edited ‎02-18-2010 04:59 PM (3,449 Views)

Summary


This article applies to the following:

  • BlackBerry® Mobile Data Service
  • BlackBerry Mobile Data System™ (BlackBerry MDS™)
  • BlackBerry wireless devices based on Java™


Problem


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 specified delivery method is not possible



Cause 1


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.


Resolution


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.


Cause 2


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.


Resolution


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.


Cause 3


The push.application.reliable.ports parameter has not been added to the BlackBerry MDS rimpublic.properties file.


Resolution


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:



push.application.reliable.ports=4000,5000


Note: Ports listed in the above example can still be used with other reliability modes or without any reliability mode.


Cause 4


The application is not listening for the push connection, or the push and application are not using the same port.


Resolution


Verify that the push application is pushing to the port on which the application is listening.


Cause 5


The application is not using MDSPushInputStream to receive the incoming data.


Resolution


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.