大家先看看我的代码,Okhttp访问接口返回json 然后 解析回调的例子
public static void get(String url, final CallBack callback) {
final Request request = new Request.Builder().url(url).get().build();
mOkhttpClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
if(callback != null) {
callback.onError();
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) {
if(callback != null) {
callback.onError();
}
}
final String result = response.body().string();
if(callback != null) {
callback.onSuccess(String result);
}
}
public interface CallBack {
void onSuccess(String result);
void onError();
}
这样写我需要把json 字符串返回回来以后再解析 感觉很麻烦 ,
想实现以下这样的方式:
HttpRequest.get(url, new CallBack<Test>() {
onSuccess(Test test);
onError();
}
经过自己思考:修改回调函数:
public interface CallBack<T> {
void onSuccess(T result);
void onError();
}
public static <T> void get(String url, final CallBack<T> callback) {
Gson gson = new Gson();
这时候就无法解析了 大家有没有好的实现思路,请教以下
}
已测试。 没问题。
public void get(ResultListener<T> listener){
http.send(HttpMethod.POST, url, params, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
listener.onError(arg1);
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
T obj = parse(businessClass, responseInfo.result);
listener.onSuccess(obj);
}
});
}
public static <T> T parse(Class<T> businessClass, String json) {
Gson gson = new Gson();
T obj = (T) gson.fromJson(json, businessClass);
return obj;
}
public interface ResultListener<T> {
void onSuccess(T t);
void onError(String msg);
}
e...这个问题啊 我没怎么看得懂你的意思,你是想解析json字符串,在哪儿解析不都一样吗?
不建议重复造轮子
用下面这个,类似的库还有好多
http://square.github.io/retrofit/
get方法在加一个T的class参数
get(String url, final CallBack<T> callback,Class<T> cls)