zhangbo1_wd

自动刷新token封装修改泛型

@@ -19,30 +19,36 @@ export class HttpBizUtil { @@ -19,30 +19,36 @@ export class HttpBizUtil {
19 * @param headers 请求header参数 19 * @param headers 请求header参数
20 * @returns 返回值 20 * @returns 返回值
21 */ 21 */
22 - static get<T = string>(url: string, headers?: HashMap<string, string>): Promise<ResponseDTO<T>> {  
23 - return new Promise<ResponseDTO<T>>((success, debug) => {  
24 - WDHttp.get<ResponseDTO<T>>(url, headers).then((resDTO: ResponseDTO<T>) => {  
25 - Logger.debug(TAG, 'get: ' + resDTO.code)  
26 - Logger.debug(TAG, 'get: ' + resDTO.message)  
27 - // 403:临时token;406:强制下线、封禁、清空登录信息还要跳转登录页面  
28 - if (resDTO.code == 403 || resDTO.code == 406) {  
29 - HttpBizUtil.refreshToken().then((token: string) => {  
30 - if (headers) {  
31 - headers.replace('RMRB-X-TOKEN', token)  
32 - headers.replace('cookie', 'RMRB-X-TOKEN=' + token)  
33 - }  
34 - Logger.debug(TAG, 'get again send: ' + token)  
35 - // refreshToken为空场景不处理,直接请求接口。  
36 - WDHttp.get<ResponseDTO<T>>(url, headers).then((resDTO: ResponseDTO<T>) => {  
37 - Logger.debug(TAG, 'get again: ' + resDTO.message)  
38 - success(resDTO)  
39 - }).catch((res: object) => {  
40 - debug(res)  
41 - })  
42 - });  
43 - } else {  
44 - success(resDTO) 22 + static get<T = ResponseDTO<string>>(url: string, headers?: HashMap<string, string>): Promise<T> {
  23 + return new Promise<T>((success, debug) => {
  24 + WDHttp.get<T>(url, headers).then((originalRes: T) => {
  25 + try {
  26 + let resDTO = originalRes as ResponseDTO
  27 + Logger.debug(TAG, 'get: ' + resDTO.code)
  28 + Logger.debug(TAG, 'get: ' + resDTO.message)
  29 + // 403:临时token;406:强制下线、封禁、清空登录信息还要跳转登录页面
  30 + if (resDTO.code == 403 || resDTO.code == 406) {
  31 + HttpBizUtil.refreshToken().then((token: string) => {
  32 + if (headers) {
  33 + headers.replace('RMRB-X-TOKEN', token)
  34 + headers.replace('cookie', 'RMRB-X-TOKEN=' + token)
  35 + }
  36 + Logger.debug(TAG, 'get again send: ' + token)
  37 + // refreshToken为空场景不处理,直接请求接口。
  38 + WDHttp.get<T>(url, headers).then((againResDTO: T) => {
  39 + Logger.debug(TAG, 'get again: ' + againResDTO)
  40 + success(againResDTO)
  41 + }).catch((res: object) => {
  42 + debug(res)
  43 + })
  44 + });
  45 + } else {
  46 + success(originalRes)
  47 + }
  48 + } catch (e) {
  49 + debug(originalRes)
45 } 50 }
  51 +
46 }).catch((res: object) => { 52 }).catch((res: object) => {
47 debug(res) 53 debug(res)
48 }) 54 })
@@ -56,27 +62,32 @@ export class HttpBizUtil { @@ -56,27 +62,32 @@ export class HttpBizUtil {
56 * @param headers 请求header参数 62 * @param headers 请求header参数
57 * @returns 返回值 63 * @returns 返回值
58 */ 64 */
59 - static post<T = string>(url: string, data?: object, headers?: HashMap<string, string>): Promise<ResponseDTO<T>> {  
60 - return new Promise<ResponseDTO<T>>((success, debug) => {  
61 - WDHttp.post<ResponseDTO<T>>(url, data, headers).then((resDTO: ResponseDTO<T>) => {  
62 - Logger.debug(TAG, 'post: ' + resDTO.code)  
63 - Logger.debug(TAG, 'post: ' + resDTO.message)  
64 - // 403:临时token;406:强制下线、封禁、清空登录信息还要跳转登录页面  
65 - if (resDTO.code == 403 || resDTO.code == 406) {  
66 - HttpBizUtil.refreshToken().then((token: string) => {  
67 - if (headers) {  
68 - headers.replace('RMRB-X-TOKEN', token)  
69 - headers.replace('cookie', 'RMRB-X-TOKEN=' + token)  
70 - }  
71 - // refreshToken为空场景不处理,直接请求接口。  
72 - WDHttp.post<ResponseDTO<T>>(url, headers).then((resDTO: ResponseDTO<T>) => {  
73 - success(resDTO)  
74 - }).catch((res: object) => {  
75 - debug(res)  
76 - })  
77 - });  
78 - } else {  
79 - success(resDTO) 65 + static post<T = ResponseDTO<string>>(url: string, data?: object, headers?: HashMap<string, string>): Promise<T> {
  66 + return new Promise<T>((success, debug) => {
  67 + WDHttp.post<T>(url, data, headers).then((originalRes: T) => {
  68 + try {
  69 + let resDTO = originalRes as ResponseDTO
  70 + Logger.debug(TAG, 'post: ' + resDTO.code)
  71 + Logger.debug(TAG, 'post: ' + resDTO.message)
  72 + // 403:临时token;406:强制下线、封禁、清空登录信息还要跳转登录页面
  73 + if (resDTO.code == 403 || resDTO.code == 406) {
  74 + HttpBizUtil.refreshToken().then((token: string) => {
  75 + if (headers) {
  76 + headers.replace('RMRB-X-TOKEN', token)
  77 + headers.replace('cookie', 'RMRB-X-TOKEN=' + token)
  78 + }
  79 + // refreshToken为空场景不处理,直接请求接口。
  80 + WDHttp.post<T>(url, headers).then((againResDTO: T) => {
  81 + success(againResDTO)
  82 + }).catch((res: object) => {
  83 + debug(res)
  84 + })
  85 + });
  86 + } else {
  87 + success(originalRes)
  88 + }
  89 + } catch (e) {
  90 + success(originalRes)
80 } 91 }
81 }).catch((res: object) => { 92 }).catch((res: object) => {
82 debug(res) 93 debug(res)
@@ -372,7 +372,7 @@ class MinePageDatasModel{ @@ -372,7 +372,7 @@ class MinePageDatasModel{
372 let url = HttpUrlUtils.getMineUserLevelDataUrl() 372 let url = HttpUrlUtils.getMineUserLevelDataUrl()
373 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders(); 373 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
374 // return WDHttp.get<ResponseDTO<MineUserLevelItem>>(url, headers) 374 // return WDHttp.get<ResponseDTO<MineUserLevelItem>>(url, headers)
375 - return HttpBizUtil.get<MineUserLevelItem>(url, headers) 375 + return HttpBizUtil.get<ResponseDTO<MineUserLevelItem>>(url, headers)
376 }; 376 };
377 377
378 async getMineUserLevelDataLocal(context: Context): Promise<MineUserLevelItem> { 378 async getMineUserLevelDataLocal(context: Context): Promise<MineUserLevelItem> {
@@ -411,7 +411,7 @@ class MinePageDatasModel{ @@ -411,7 +411,7 @@ class MinePageDatasModel{
411 let url = HttpUrlUtils.getMineUserDetailDataUrl() 411 let url = HttpUrlUtils.getMineUserDetailDataUrl()
412 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders(); 412 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
413 // return WDHttp.get<ResponseDTO<MineUserDetailItem>>(url, headers) 413 // return WDHttp.get<ResponseDTO<MineUserDetailItem>>(url, headers)
414 - return HttpBizUtil.get<MineUserDetailItem>(url, headers) 414 + return HttpBizUtil.get<ResponseDTO<MineUserDetailItem>>(url, headers)
415 }; 415 };
416 416
417 async getMineUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> { 417 async getMineUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> {
@@ -224,7 +224,7 @@ export class LoginModel { @@ -224,7 +224,7 @@ export class LoginModel {
224 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders(); 224 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
225 225
226 return new Promise<string>((success, fail) => { 226 return new Promise<string>((success, fail) => {
227 - HttpBizUtil.post<string>(HttpUrlUtils.getLogoutUrl(), bean, headers).then((data: ResponseDTO<string>)=>{ 227 + HttpBizUtil.post<ResponseDTO<string>>(HttpUrlUtils.getLogoutUrl(), bean, headers).then((data: ResponseDTO<string>)=>{
228 if (!data) { 228 if (!data) {
229 fail("数据为空") 229 fail("数据为空")
230 return 230 return