2013-10-06 3 views
1

Есть ли способ справиться с ситуацией, когда сообщение не доставляется на сервер? Долфин-журнал сообщает о ситуации ясно, но я хотел бы поймать его из кода. Я искал какой-то метод, как: OnError переопределения как onFinished:Как пропустить клиент OpenDolphin отправить HttpHostConnectException?

clientDolphin.send(message, new OnFinishedHandlerAdapter() { 
     @Override 
     public void onFinished(List<ClientPresentationModel> presentationModels) { 
      // Do something useful 
      } 
     } 
    }); 

, но нет ничего подобного. Также обертывание отправить вызов в try/catch не работает (не удивляет, так как send не блокирует его код вызывающего абонента).

Я знаю, что есть определенно простой способ получить информацию о неподтвержденном сообщении, но я не могу его увидеть. Thaks, в advace, для ответов!

ответ

1

Вы можете назначить обработчик onException для ClientConnector - и вы на самом деле должны это делать. Обработчик исключений получит объект исключения, прошедший в случае асинхронного действия отправки.

Ниже по умолчанию обработчик, который даже говорит вам, что вы должны сделать ;-)

Closure onException = { Throwable up -> 
    def out = new StringWriter() 
    up.printStackTrace(new PrintWriter(out)) 
    log.severe("onException reached, rethrowing in UI Thread, consider setting ClientConnector.onException\n${out.buffer}") 
    uiThreadHandler.executeInsideUiThread { throw up } // not sure whether this is a good default 
} 
+0

Спасибо Дирк. Я уже сделал очень уродливое обходное решение: отправьте пустое сообщение и подождите, если ответ заходит через несколько секунд. Он работает как сердцебиение в отдельных бит. Но использование правильного решения - это, безусловно, лучшая идея;) Большое спасибо! –