From 1d717d1116cc5c81d05e58343e99229d4ccc9f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E4=BD=B3=E9=93=A8?= <105442529@qq.com> Date: Thu, 23 Jun 2016 17:31:32 +0800 Subject: [PATCH] =?UTF-8?q?[add][what]=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=E7=9A=84=E5=BA=8F=E5=88=97=E5=8C=96Callback?= =?UTF-8?q?=20(sample=E9=A1=B9=E7=9B=AE=E4=B8=AD=E6=9C=89=E4=B8=80?= =?UTF-8?q?=E4=B8=AAJson=E5=BA=8F=E5=88=97=E5=8C=96=E7=9A=84=E4=BE=8B?= =?UTF-8?q?=E5=AD=90)=20[why]=E9=81=BF=E5=85=8D=E6=AF=8F=E7=A7=8D=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E8=BF=94=E5=9B=9E=E5=AF=B9=E8=B1=A1=E9=83=BD?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=96=B0=E5=BB=BA=E7=9B=B8=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84Callback=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../okhttp/callback/GenericsCallback.java | 30 +++++++++++++++++++ .../callback/IGenericsSerializator.java | 8 +++++ .../JsonGenericsSerializator.java | 15 ++++++++++ .../com/zhy/sample_okhttp/MainActivity.java | 3 +- 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 okhttputils/src/main/java/com/zhy/http/okhttp/callback/GenericsCallback.java create mode 100644 okhttputils/src/main/java/com/zhy/http/okhttp/callback/IGenericsSerializator.java create mode 100644 sample-okhttp/src/main/java/com/zhy/sample_okhttp/JsonGenericsSerializator.java diff --git a/okhttputils/src/main/java/com/zhy/http/okhttp/callback/GenericsCallback.java b/okhttputils/src/main/java/com/zhy/http/okhttp/callback/GenericsCallback.java new file mode 100644 index 0000000..215211d --- /dev/null +++ b/okhttputils/src/main/java/com/zhy/http/okhttp/callback/GenericsCallback.java @@ -0,0 +1,30 @@ +package com.zhy.http.okhttp.callback; + +import java.io.IOException; +import java.lang.reflect.ParameterizedType; + +import okhttp3.Response; + +/** + * Created by JimGong on 2016/6/23. + */ + +public abstract class GenericsCallback extends Callback { + IGenericsSerializator mGenericsSerializator; + + public GenericsCallback(IGenericsSerializator serializator) { + mGenericsSerializator = serializator; + } + + @Override + public T parseNetworkResponse(Response response, int id) throws IOException { + String string = response.body().string(); + Class entityClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + if (entityClass == String.class) { + return (T) string; + } + T bean = mGenericsSerializator.transform(string, entityClass); + return bean; + } + +} diff --git a/okhttputils/src/main/java/com/zhy/http/okhttp/callback/IGenericsSerializator.java b/okhttputils/src/main/java/com/zhy/http/okhttp/callback/IGenericsSerializator.java new file mode 100644 index 0000000..c037cc4 --- /dev/null +++ b/okhttputils/src/main/java/com/zhy/http/okhttp/callback/IGenericsSerializator.java @@ -0,0 +1,8 @@ +package com.zhy.http.okhttp.callback; + +/** + * Created by JimGong on 2016/6/23. + */ +public interface IGenericsSerializator { + T transform(String response, Class classOfT); +} diff --git a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/JsonGenericsSerializator.java b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/JsonGenericsSerializator.java new file mode 100644 index 0000000..2971727 --- /dev/null +++ b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/JsonGenericsSerializator.java @@ -0,0 +1,15 @@ +package com.zhy.sample_okhttp; + +import com.google.gson.Gson; +import com.zhy.http.okhttp.callback.IGenericsSerializator; + +/** + * Created by JimGong on 2016/6/23. + */ +public class JsonGenericsSerializator implements IGenericsSerializator { + Gson mGson = new Gson(); + @Override + public T transform(String response, Class classOfT) { + return mGson.fromJson(response, classOfT); + } +} diff --git a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java index 9cfce22..ec7fb40 100644 --- a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java +++ b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java @@ -15,6 +15,7 @@ import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.BitmapCallback; import com.zhy.http.okhttp.callback.FileCallBack; +import com.zhy.http.okhttp.callback.GenericsCallback; import com.zhy.http.okhttp.callback.StringCallback; import com.zhy.http.okhttp.cookie.CookieJarImpl; @@ -156,7 +157,7 @@ public void getUser(View view) .addParams("username", "hyman")// .addParams("password", "123")// .build()// - .execute(new UserCallback() + .execute(new GenericsCallback(new JsonGenericsSerializator()) { @Override public void onError(Call call, Exception e, int id)