package foundation.icall.callout; import java.util.ArrayList; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.dao.bizlogic.IJSONResponse; import foundation.json.JArrayReader; import foundation.json.JObjectReader; import foundation.json.JSONReader; import foundation.json.JType; import okhttp3.Response; import okhttp3.ResponseBody; public class JSONResponse implements IJSONResponse { protected static Logger logger; private JSONReader reader; private List errors; private String content; private int resultCode; static { logger = LogManager.getLogger(JSONResponse.class); } public JSONResponse(Response response) { errors = new ArrayList(); if (response == null) { errors.add("调用没有返回"); return; } resultCode = response.code(); if (!response.isSuccessful()) { errors.add("错误码: " + response.code()); } try { ResponseBody body = response.body(); content = body.string(); JType type = JSONReader.readType(content); if (JType.Object == type) { reader = new JObjectReader(content); } else if (JType.Array == type) { reader = new JArrayReader(content); } else { logger.error("invalid json for JSONResponse"); reader = null; } } catch (Exception e) { errors.add(e.getMessage()); e.printStackTrace(); } } public String getString(String name) { if (reader == null) { return null; } return reader.getRawString(name); } public JArrayReader parseJArrayReader() { if (reader == null) { return null; } return (JArrayReader) reader; } public boolean hasErrors() { return !errors.isEmpty(); } public int getResultCode() { return resultCode; } @Override public String toString() { return content; } }