TL; DR - поймать исключение в Python и отправить пользовательский объект JSON с сообщением, которое вы хотите отобразить клиенту, обратно во Flex.
Это шаблон Iследовать.Пример, который я собираюсь привести, находится на C #, но я предполагаю, что те же принципы могут быть применены к Python.
Я обрабатываю исключение в веб-сервисе и отправляю объект JSON, содержащий ошибку, которую я хотел бы отобразитьпользователю.
Здесь я ловлю ошибку:
try
{
string jsonResponse = doStuff();
return Json(jsonResponse, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new GetTokenError(ex.Message), JsonRequestBehavior.AllowGet);
}
Вот объект возврата, который я использую для преобразования в JSON и возврата клиенту:
/// <summary>
/// Used for displaying consistent error messages
/// </summary>
public class GetTokenError
{
/// <summary>
/// Ctor
/// </summary>
/// <param name="error">Error message to display</param>
public GetTokenError(string error)
{
this.error = error;
}
/// <summary>
/// The error to display
/// </summary>
public string error { get; set; }
}
Использование этого метода всегда возвращает 200, если с вашим веб-сервером не установлено что-то не так, соединение клиента и веб-сервера или гремлины не заразили вашу машину.
Что касается гибкой стороны, здесьобработчики моего результата:
var http:HTTPService = new HTTPService();
http.method = "POST";
http.resultFormat = HTTPService.RESULT_FORMAT_TEXT;
http.url = "http://url.com";
http.addEventListener(ResultEvent.RESULT, function(evt:ResultEvent):void {
try {
var ret:Object = JSON.decode(evt.result.toString());
if (ret.error)
{
// handle server error
}
// go about task
} catch (e:Error) {
// handle local error
}
});
http.addEventListener(FaultEvent.FAULT, function(ex:FaultEvent):void {
// handle error with the call
});
http.send();