chengkun
2025-06-05 4080b5997b38ca84b3b203c7101dcadb97b76925
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2020 All Rights Reserved.
 */
package com.alipay.easysdk.kernel.util;
 
import com.aliyun.tea.TeaModel;
import com.google.common.base.Strings;
 
import java.lang.reflect.Field;
 
/**
 * 响应检查工具类
 *
 * @author zhongyu
 * @version : ResponseChecker.java, v 0.1 2020年06月02日 10:42 上午 zhongyu Exp $
 */
public class ResponseChecker {
 
    public static final String SUB_CODE_FIELD_NAME = "subCode";
 
    /**
     * 判断一个请求返回的响应是否成功
     *
     * @param response 响应对象
     * @return true:成功;false:失败
     */
    public static boolean success(TeaModel response) {
        try {
            Field subCodeField = response.getClass().getField(SUB_CODE_FIELD_NAME);
            subCodeField.setAccessible(true);
            String subCode = (String) subCodeField.get(response);
            return Strings.isNullOrEmpty(subCode);
        } catch (NoSuchFieldException | IllegalAccessException e) {
            //没有subCode字段的响应对象,通常是那些无需跟网关远程通信的API,只要本地执行完成都视为成功
            return true;
        }
    }
}