我有一個應用程序接口,使用http post/get使用xml消息。接口系統返回帶有結果代碼和請求數據的消息。結果代碼是3部分,代碼和按代碼分類的類型(登錄,請求...)。某些代碼/子代碼是登錄成功等消息,其他代碼則是例外,例如無效登錄或無效消息請求。處理來自外部系統的結果代碼查找 - 如果需要拋出異常
我想找到一種方法來處理結果代碼並根據需要拋出異常。如果結果代碼僅是信息性的,只需將我的返回消息中的消息應用於api消費者。我正在研究責任鏈,但是試圖通過它來解決大腦阻塞問題。
示例代碼
類型.... Code..Subcode ....說明
登錄... 0 0 ..... ..........請求成功
登錄... 0 ..... nn .........登錄成功。 「nn」天才會到期
登錄... 21 .... 1 ..........登錄失敗。 (用戶名/密碼錯誤)。
登錄... 21 .... 4 ..........已經登錄
登錄... 21 .... 5 ..........系統資源不可用。無法分配安全對象
Request.50 .... 2 ..........服務無效語法
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; }
}
}