You have to build a 'temporary off-line' checker in your app.
If you experience X errors in Y time, wait for a few seconds, and then try again. Increase the waiting time over the number of tries.
In this way, you prevent the server to get overloaded. And your client will resume as soon as the service is ready.