У меня есть интерфейс приложения, который использует http post/get, используя xml-сообщения. Система интерфейса возвращает сообщение с кодами результатов и запрошенными данными. Коды результатов состоят из трех частей, кода и подкода, сгруппированных по типу (логин, запрос ...). Некоторые коды/подкоды представляют собой такие сообщения, как login successl, другие - исключения, такие как неверный логин или неверный запрос сообщения.Обработка результатов поиска кода из внешней системы - исключение метательных исключений
Я пытаюсь найти способ обработки результирующих кодов и выдачу исключения с сообщением, если это необходимо. Если код результата является информационным, просто примените сообщение к моему возвращенному сообщению пользователю api. Я смотрю на цепочку ответственности, но сталкиваюсь с блоком мозга, пытаясь проработать его.
Примеры кодов
тип .... Code..Subcode .... Описание
Войти ... 0 ..... 0 .......... запрос успешно
Войти ... 0 ..... nn ......... Войти успешно. «Nn» дней осталось до истечения срока действия
Логин ... 21 .... 1 .......... Ошибка входа. (Userid/password wrong).
Вход ... 21 .... 4 .......... Уже зарегистрировался
Вход ... 21 .... 5 .......... Системные ресурсы недоступны , Не удалось выделить объект безопасности
Request.50 .... 2 .......... service Недействительный синтаксис
Request.50 .... 3 .......... service Неверные атрибуты
Request.50 .... 4 .......... обслуживание Пакетный файл уже существует
Результат сообщения с кодами (код, субкода):
loginmanagerresult 0, 0 является информационным , все хорошо
loginresult 0, 24855 это учетная запись хорошо, не exipration не
если loginresult было 1, 2, бросок счет исключения заблокирован
<?xml version="1.0" encoding="UTF-8"?>
<loginmanagerresult sessionname="ALBHMROC9040RL1" code="0" subcode="0">
<loginresult code="0" subcode="24855" sectoken="f1044f0aaad65ef2e28d4edc0663716f00000000"></loginresult>
</loginmanagerresult>
У меня есть объекты, десериализованные в следующее: которые не могут быть изменены, расширены \ унаследованы, но нет дополнительных свойств \ функций.
public class LoginResult
{
private string code = "";
[XmlAttribute("code")]
public string Code
{
get { return code; }
set { code = value; }
}
private string subCode = "";
[XmlAttribute("subcode")]
public string SubCode
{
get { return subCode; }
set { subCode = value; }
}
private string secToken = "";
[XmlAttribute("sectoken")]
public string SecToken
{
get { return secToken; }
set { secToken = value; }
}
}
[XmlRoot("loginmanagerresult")]
public class LoginManagerResult
{
private string sessionName = "";
[XmlAttribute("sessionname")]
public string SessionName
{
get { return sessionName; }
set { sessionName = value; }
}
private string code = "";
[XmlAttribute("code")]
public string Code
{
get { return code; }
set { code = value; }
}
private string subCode = "";
[XmlAttribute("subcode")]
public string SubCode
{
get { return subCode; }
set { subCode = value; }
}
private LoginResult loginResult = null;
[XmlElement("loginresult", IsNullable = true)]
public LoginResult LoginResult
{
get { return loginResult; }
set { loginResult = value; }
}
private QueryCapabilitiesResult queryCapabilitiesResult = null;
[XmlElement("querycapabilitiesresult", IsNullable = true)]
public QueryCapabilitiesResult QueryCapabilitiesResult
{
get { return queryCapabilitiesResult; }
set { queryCapabilitiesResult = value; }
}
private GetMotdResult getMotdResult = null;
[XmlElement("getmotdresult", IsNullable = true)]
public GetMotdResult GetMotdResult
{
get { return getMotdResult; }
set { getMotdResult = value; }
}
private LogOutResult logOutResult = null;
[XmlElement("logoutresult", IsNullable = true)]
public LogOutResult LogOutResult
{
get { return logOutResult; }
set { logOutResult = value; }
}
}