Delphi. idHTTPServer. Обработка ошибок сервера и получение их на клиенте

Для меня не очевидным был этот вопрос. Хотелось получить информацию об ошибке сервера на клиенте. То есть, примерно так…

71

Ведь idHTTPServer многопоточный, и значит, возбуждение исключения при ошибке можно было сделать так

Как обработать исключение из потока?

Но idHTTP и idHTTPServer почти всегда находятся в разных приложениях, и значит объекты Application у них разные. Поэтому такой способ не подойдет.

Но всё оказалось проще, чем я думал. Пришлось потратить какое-то время на нюансы. Но в целом, результат есть.

На idHTTPServer в CommandGet пишем следующее (имитируем ошибку деления на ноль)

Если мы напишем второй раз

Данные инструкции, то на клиент сообщение “testing ok2′  не попадет, я так понимаю WriteContent можно использовать в данном случае один раз. Можно покопаться в исходниках и понять почему.

На клиенте наше исключение попадает в результат метода POST компонента idHTTP

Ну а далее, если это скажем, не тот ответ сервера, который нам нужен, на клиенте мы просто возбуждаем исключение с сообщением от сервера, скажем, так

И отлавливаем его в except блоке на клиенте, примерно так (пример из проекта)

Вот в принципе и всё!

70

This entry was posted in Delphi, Indy. Bookmark the permalink.