使用了鸿洋大神封装的Okhttp3,遇到了泛型擦除如何解决?
能够成功的传值到服务器端,服务器端传回来的数据类型是<T>,到了方法parseNetworkResponse()中后泛型擦除,改如何解决
public abstract class OkHttpCallback<T> extends Callback<HttpWrapper<T>> {
public String TAG="OkHttpCallback";
@Override
public HttpWrapper<T> parseNetworkResponse(Response response, int id) throws Exception {
// Log.e(TAG,response.body().string()+"-------------------------------------------------------------------------------------");
return new Gson().fromJson(response.body().string(),HttpWrapper.class);
}
@Override
public void onError(Call call, Exception e, int id) {
/**
* 异常
*/
// Toast.makeText(AppCenter.mContext,"网络错误",Toast.LENGTH_LONG).show();
}
@Override
public void onResponse(HttpWrapper<T> response, int id) {
switch (response.getCode()){
case 200:
onSuccess(response,id);
break;
case 201:
/**
* 201失败情况下
*/
// Toast.makeText(AppCenter.mContext,response.getInfo(),Toast.LENGTH_LONG).show();
onFaild(response,id);
break;
default:
break;
}
}
protected abstract void onFaild(HttpWrapper<T> response, int id);
protected abstract void onSuccess(HttpWrapper<T> response, int id) ;
}
public class HttpWrapper<T> implements Serializable {
/**
* 响应码 服务器返回200为成功,201为失败
*/
public int code;
/**
* 返回的数据类型 不确定
*/
public T data;
/**
* 对应的响应信息
*/
public String info;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
public class Test {
public String success;
public Test(){
}
public Test(String success){
this.success=success;
}
@Override
public String toString() {
return "Test{" +
"success='" + success + '\'' +
'}';
}
}
OkHttpUtils
.post()
.url(Constants.BASEURL+"textPost")
.addParams("username",et_username.getText().toString())
.addParams("password",et_password.getText().toString())
.build()
.execute(new OkHttpCallback<Test>() {
@Override
protected void onFaild(HttpWrapper<Test> response, int id) {
// et_username.setText("onError:"+response.getData());
// System.out.println("onError:"+response.getData()+"------------------------------------");
//
// Log.e(TAG,"onError:"+response.getData()+"------------------------------------");
}
@Override
protected void onSuccess(HttpWrapper<Test> response, int id) {
et_username.setText(new Gson().toJson(response));
System.out.println("onSuccess:"+new Gson().toJson(response)+"------------------------------------");
Log.e(TAG,"onSuccess:"+new Gson().toJson(response)+"------------------------------------");
}
});