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<String> errors;
|
private String content;
|
private int resultCode;
|
|
static {
|
logger = LogManager.getLogger(JSONResponse.class);
|
}
|
|
public JSONResponse(Response response) {
|
errors = new ArrayList<String>();
|
|
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;
|
}
|
|
}
|