From 3de4281d31c6dc7107dbeb9c60026117ded60933 Mon Sep 17 00:00:00 2001 From: geduo83 Date: Thu, 14 May 2020 19:43:11 +0800 Subject: [PATCH] code perfect --- .../java/com/mxdl/okhttp3/Main2Activity.java | 69 +++++++++++ .../java/com/mxdl/okhttp3/MainActivity.java | 65 +++++----- .../com/mxdl/okhttp3/ok_fly/uml/okhttp.puml | 4 + .../mxdl/okhttp3/ok_fly1/FlyHttpUtils.java | 113 ++++++++++++++++++ .../okhttp3/ok_fly1/base/BaseBuidler.java | 40 +++++++ .../okhttp3/ok_fly1/base/BaseRequest.java | 35 ++++++ .../okhttp3/ok_fly1/builder/GetBuilder.java | 20 ++++ .../okhttp3/ok_fly1/builder/PostBuilder.java | 26 ++++ .../okhttp3/ok_fly1/call/RequestCall.java | 39 ++++++ .../okhttp3/ok_fly1/request/GetRequst.java | 36 ++++++ .../okhttp3/ok_fly1/request/PostRequest.java | 33 +++++ .../okhttp3/ok_fly1/response/OnResponse.java | 17 +++ .../com/mxdl/okhttp3/ok_fly1/uml/okhttp.puml | 50 ++++++++ .../mxdl/okhttp3/ok_man/OkHttpManager.java | 11 +- .../okhttp3/ok_man/response/MyCallBack.java | 29 ++--- .../okhttp3/ok_man/uml/OkHttpManager.puml | 27 +++++ .../src/main/res/layout/activity_main2.xml | 13 +- 17 files changed, 570 insertions(+), 57 deletions(-) create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/FlyHttpUtils.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseBuidler.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseRequest.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/GetBuilder.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/PostBuilder.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/call/RequestCall.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/GetRequst.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/PostRequest.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/response/OnResponse.java create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/uml/okhttp.puml create mode 100644 okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/uml/OkHttpManager.puml diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/Main2Activity.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/Main2Activity.java index 46a75e4..6e9f8e8 100644 --- a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/Main2Activity.java +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/Main2Activity.java @@ -10,6 +10,10 @@ import android.widget.TextView; import com.google.gson.Gson; import com.mxdl.okhttp3.bean.User; +import com.mxdl.okhttp3.ok_fly1.FlyHttpUtils; +import com.mxdl.okhttp3.ok_fly1.response.OnResponse; +import com.mxdl.okhttp3.response.AddUserResponse; +import com.mxdl.okhttp3.response.BaseResponse; import java.io.IOException; @@ -107,4 +111,69 @@ public class Main2Activity extends AppCompatActivity { } }); } + + public void login1(View view) { + FlyHttpUtils.getInstance() + .get() + .url("http://192.168.0.189:8080/user/login") + .addParams("username", "mxdl") + .addParams("password", "123456") + .builder() + .buildCall().execute(new OnResponse() { + @Override + public void onStart() { + Log.v("MYTAG", "onStart start..."); + + } + + @Override + public void onSucc(BaseResponse response) { + Log.v("MYTAG", "onSucc start..."); + Log.v("MYTAG", response.toString()); + } + + @Override + public void onFail(Exception e) { + Log.v("MYTAG", "onFail start..."); + } + + @Override + public void onComplete() { + Log.v("MYTAG", "onComplete start..."); + } + }); + } + + public void addUser1(View view) { + FlyHttpUtils.getInstance() + .post() + .url("http://192.168.0.189:8080/user/addUser") + .body(new User("zhangsan", 123456)) + .builder() + .buildCall().execute(new OnResponse() { + @Override + public void onStart() { + Log.v("MYTAG", "onStart start..."); + + } + + @Override + public void onSucc(AddUserResponse response) { + Log.v("MYTAG", "onSucc start..."); + Log.v("MYTAG", response.toString()); + } + + @Override + public void onFail(Exception e) { + Log.v("MYTAG", "onFail start..."); + } + + @Override + public void onComplete() { + Log.v("MYTAG", "onComplete start..."); + } + }); + + } + } diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/MainActivity.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/MainActivity.java index 00eb988..6175932 100644 --- a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/MainActivity.java +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/MainActivity.java @@ -128,32 +128,34 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe * 原生的get请求 */ private void login() { - //创建个http客户端 - OkHttpClient client = new OkHttpClient(); - //构建一个url - HttpUrl httpUrl = HttpUrl.parse("http://192.168.31.105:8080/user/login").newBuilder() - .addQueryParameter("userName", "mxdl") - .addQueryParameter("passWord", "123456").build(); - //根据url创建一个request - Request loginRequest = new Request.Builder().url(httpUrl).build(); - - //根据request创建一个call - Call call = client.newCall(loginRequest); - - //开启一个异步请求 - call.enqueue(new Callback() { - @Override - public void onFailure(Call call, IOException e) { - Log.v("MYTAG", "onFailure start..."); - Log.v("MYTAG", e.toString()); - } - + Log.v("MYTAG", "login start..."); + new Thread(new Runnable() { @Override - public void onResponse(Call call, Response response) throws IOException { - Log.v("MYTAG", "onSucc start..."); - Log.v("MYTAG", response.body().string()); + public void run() { + //1.创建一个HttpClient + OkHttpClient httpClient = new OkHttpClient.Builder().build(); + + //2.创建一个request请求 + //String url = "http://192.168.0.189:8080/user/login?username=mxdl&password=123456"; + String url = "http://192.168.0.189:8080/user/login"; + HttpUrl httpUrl = HttpUrl.get(url).newBuilder() + .addQueryParameter("username", "mxdl") + .addQueryParameter("password", "123456") + .build(); + Request loginRequst = new Request.Builder().url(httpUrl).build(); + + //3.创建一个请求命令 + Call loginCall = httpClient.newCall(loginRequst); + + //4.发起一个同步的请求 + try { + Response loginResponse = loginCall.execute(); + Log.v("MYTAG", loginResponse.body().string()); + } catch (IOException e) { + Log.v("MYTAG", e.toString()); + } } - }); + }).start(); } /** @@ -164,7 +166,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe OkHttpClient client = new OkHttpClient(); //构建一个request请求 final Request request = new Request.Builder().url("http://192.168.31.105:8080/user/addUser") - .post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"),"{\"userName\":\"mxdl\",\"passWord\":123456}")) + .post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"),"{\"username\":\"mxdl\",\"password\":123456}")) .build(); //根据request创建一个call命令 Call call = client.newCall(request); @@ -190,11 +192,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private void login1() { //把登录的参数放在HashMap里 HashMap params = new HashMap<>(); - params.put("userName", "mxdl"); - params.put("passWord", "123456"); + params.put("username", "mxdl"); + params.put("password", "123456"); //传入url,参数,回调开始请求 - OkHttpManager.getInstance().get("http://192.168.31.105:8080/user/login", params, new OnResponse() { + OkHttpManager.getInstance().get("http://192.168.0.189:8080/user/login", params, new OnResponse() { @Override public void onStart() { Log.v("MYTAG", "onStart..."); @@ -227,7 +229,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe User user = new User("mxdl", 111); //传入url,User和回调开启添加一个用户的请求 - OkHttpManager.getInstance().post("http://192.168.31.105:8080/user/addUser", user, new OnResponse() { + OkHttpManager.getInstance().post("http://192.168.0.189:8080/user/addUser", user, new OnResponse() { @Override public void onStart() { Log.v("MYTAG", "onStart..."); @@ -237,7 +239,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe public void onSucc(AddUserResponse resDTO) { Log.v("MYTAG", "onSucc..."); Log.v("MYTAG", resDTO.toString()); - Log.v("MYTAG", resDTO.toString()); } @Override @@ -258,7 +259,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe */ private void login2() { OkHttpUtils.get() - .url("http://192.168.31.105:8080/user/login") + .url("http://192.168.0.189:8080/user/login") .addParams("userName", "mxdl") .addParams("passWord", "123456") .build() @@ -291,7 +292,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe */ private void addUser2() { OkHttpUtils.postString() - .url("http://192.168.31.105:8080/user/addUser") + .url("http://192.168.0.189:8080/user/addUser") .content(new User("aaa", 111)) .mediaType(MediaType.parse("application/json;charset=utf-8")) .build() diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly/uml/okhttp.puml b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly/uml/okhttp.puml index b5b4b2e..39dbc57 100644 --- a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly/uml/okhttp.puml +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly/uml/okhttp.puml @@ -34,5 +34,9 @@ PostRequest --> BaseRequestBuilder RequestCall --> BaseRequest RequestCall --> BaseCallback +class OkHttpUtils{ + public GetBuilder get(); + public PostBuilder post(); +} OkHttpUtils --> RequestCall @enduml \ No newline at end of file diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/FlyHttpUtils.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/FlyHttpUtils.java new file mode 100644 index 0000000..e150f4f --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/FlyHttpUtils.java @@ -0,0 +1,113 @@ +package com.mxdl.okhttp3.ok_fly1; + +import android.os.Handler; +import android.os.Looper; + +import com.facebook.stetho.common.ExceptionUtil; +import com.google.gson.Gson; +import com.mxdl.okhttp3.ok_fly1.builder.GetBuilder; +import com.mxdl.okhttp3.ok_fly1.builder.PostBuilder; +import com.mxdl.okhttp3.ok_fly1.call.RequestCall; +import com.mxdl.okhttp3.ok_fly1.response.OnResponse; + +import java.io.IOException; +import java.lang.reflect.ParameterizedType; +import java.util.concurrent.Executor; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Response; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public class FlyHttpUtils { + private OkHttpClient okHttpClient; + private MainUiTherad mainUiTherad = new MainUiTherad(); + + class MainUiTherad implements Executor { + Handler handler = new Handler(Looper.getMainLooper()); + + @Override + public void execute(Runnable command) { + handler.post(command); + } + } + + private FlyHttpUtils() { + okHttpClient = new OkHttpClient.Builder().build(); + } + + public static FlyHttpUtils getInstance() { + return FlyHttpUtilsHolder.flyHttpUtils; + } + + public static class FlyHttpUtilsHolder { + public static FlyHttpUtils flyHttpUtils = new FlyHttpUtils(); + } + + public void execute(RequestCall requestCall, final OnResponse onResponse) { + requestCall.getCall().enqueue(new Callback() { + @Override + public void onFailure(Call call, final IOException e) { + onFail(e, onResponse); + } + + @Override + public void onResponse(Call call, final Response response) { + try { + if (response.isSuccessful()) { + final String body = response.body().string(); + Class tClass = (Class) ((ParameterizedType) onResponse.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + final T t = new Gson().fromJson(body, tClass); + onSucc(t, onResponse); + } else { + onFail(new Exception("未知异常"), onResponse); + } + } catch (final IOException e) { + onFail(e, onResponse); + } + } + }); + } + + private void onFail(final Exception e, final OnResponse onResponse) { + mainUiTherad.execute(new Runnable() { + @Override + public void run() { + if (onResponse != null) { + onResponse.onFail(e); + onResponse.onComplete(); + } + } + }); + } + + private void onSucc(final T t, final OnResponse onResponse) { + mainUiTherad.execute(new Runnable() { + @Override + public void run() { + if (onResponse != null) { + onResponse.onSucc(t); + onResponse.onComplete(); + } + } + }); + } + + public OkHttpClient getOkHttpClient() { + return okHttpClient; + } + + public GetBuilder get() { + return new GetBuilder(); + } + + public PostBuilder post() { + return new PostBuilder(); + } +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseBuidler.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseBuidler.java new file mode 100644 index 0000000..ba16a1b --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseBuidler.java @@ -0,0 +1,40 @@ +package com.mxdl.okhttp3.ok_fly1.base; + +import java.util.HashMap; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public abstract class BaseBuidler { + //请求的url + protected String url; + //请求的Headders + protected HashMap headers = new HashMap<>(); + //请求的参数 + protected HashMap parsms = new HashMap<>(); + + //构建url + public T url(String url) { + this.url = url; + return (T) this; + } + + //构建一个header参数 + public T addHeader(String key, String value) { + headers.put(key, value); + return (T) this; + } + + //构建一个请求参数 + public T addParams(String key, String value) { + parsms.put(key, value); + return (T) this; + } + + //最终要构建的对象 + public abstract BaseRequest builder(); +} \ No newline at end of file diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseRequest.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseRequest.java new file mode 100644 index 0000000..3cd5644 --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/base/BaseRequest.java @@ -0,0 +1,35 @@ +package com.mxdl.okhttp3.ok_fly1.base; + + +import com.mxdl.okhttp3.ok_fly1.call.RequestCall; + +import java.util.HashMap; + +import okhttp3.Request; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public abstract class BaseRequest { + //请求的url + protected String url; + //请求的Headders + protected HashMap headers = new HashMap<>(); + //请求的参数 + protected HashMap parsms = new HashMap<>(); + + public BaseRequest(String url, HashMap headers, HashMap parsms) { + this.url = url; + this.headers = headers; + this.parsms = parsms; + } + + public RequestCall buildCall(){ + return new RequestCall(this); + } + public abstract Request builderRequest(); +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/GetBuilder.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/GetBuilder.java new file mode 100644 index 0000000..0493cdd --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/GetBuilder.java @@ -0,0 +1,20 @@ +package com.mxdl.okhttp3.ok_fly1.builder; + +import com.mxdl.okhttp3.ok_fly1.base.BaseBuidler; +import com.mxdl.okhttp3.ok_fly1.base.BaseRequest; +import com.mxdl.okhttp3.ok_fly1.request.GetRequst; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public class GetBuilder extends BaseBuidler { + + @Override + public BaseRequest builder() { + return new GetRequst(url,headers,parsms); + } +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/PostBuilder.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/PostBuilder.java new file mode 100644 index 0000000..602d180 --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/builder/PostBuilder.java @@ -0,0 +1,26 @@ +package com.mxdl.okhttp3.ok_fly1.builder; + +import com.mxdl.okhttp3.ok_fly1.base.BaseBuidler; +import com.mxdl.okhttp3.ok_fly1.base.BaseRequest; +import com.mxdl.okhttp3.ok_fly1.request.PostRequest; + +import java.util.Observable; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public class PostBuilder extends BaseBuidler { + private Object body; + @Override + public BaseRequest builder() { + return new PostRequest(url,body,headers,parsms); + } + public BaseBuidler body(Object body){ + this.body = body; + return this; + } +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/call/RequestCall.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/call/RequestCall.java new file mode 100644 index 0000000..3c26dc5 --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/call/RequestCall.java @@ -0,0 +1,39 @@ +package com.mxdl.okhttp3.ok_fly1.call; + +import com.mxdl.okhttp3.ok_fly1.FlyHttpUtils; +import com.mxdl.okhttp3.ok_fly1.base.BaseRequest; +import com.mxdl.okhttp3.ok_fly1.response.OnResponse; + +import java.io.IOException; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public class RequestCall { + private BaseRequest request; + private Call call; + + public RequestCall(BaseRequest request) { + this.request = request; + } + + public void execute(OnResponse response){ + Request request = this.request.builderRequest(); + call = FlyHttpUtils.getInstance().getOkHttpClient().newCall(request); + FlyHttpUtils.getInstance().execute(this,response); + } + + public Call getCall() { + return call; + } +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/GetRequst.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/GetRequst.java new file mode 100644 index 0000000..7f77174 --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/GetRequst.java @@ -0,0 +1,36 @@ +package com.mxdl.okhttp3.ok_fly1.request; + +import com.mxdl.okhttp3.ok_fly1.base.BaseRequest; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; + +import okhttp3.HttpUrl; +import okhttp3.Request; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public class GetRequst extends BaseRequest { + public GetRequst(String url, HashMap headers, HashMap parsms) { + super(url, headers, parsms); + } + + @Override + public Request builderRequest() { + HttpUrl.Builder builder = HttpUrl.parse(url).newBuilder(); + if(!parsms.isEmpty()){ + Iterator iterator = parsms.keySet().iterator(); + while (iterator.hasNext()){ + String key = iterator.next(); + builder.addQueryParameter(key,parsms.get(key)); + } + } + return new Request.Builder().url(builder.build()).build(); + } +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/PostRequest.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/PostRequest.java new file mode 100644 index 0000000..5432d16 --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/request/PostRequest.java @@ -0,0 +1,33 @@ +package com.mxdl.okhttp3.ok_fly1.request; + +import com.google.gson.Gson; +import com.mxdl.okhttp3.ok_fly1.base.BaseRequest; + +import java.util.HashMap; + +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public class PostRequest extends BaseRequest { + private Object body; + + public PostRequest(String url, Object body, HashMap headers, HashMap parsms) { + super(url, headers, parsms); + this.body = body; + } + + @Override + public Request builderRequest() { + return new Request.Builder().url(url) + .post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"), new Gson().toJson(body))) + .build(); + } +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/response/OnResponse.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/response/OnResponse.java new file mode 100644 index 0000000..cf76dad --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/response/OnResponse.java @@ -0,0 +1,17 @@ +package com.mxdl.okhttp3.ok_fly1.response; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2020/5/14
+ * Version: V1.0.0
+ * Update:
+ */ +public abstract class OnResponse { + public abstract void onStart(); + public abstract void onSucc(T t); + public abstract void onFail(Exception e); + public abstract void onComplete(); + + +} diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/uml/okhttp.puml b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/uml/okhttp.puml new file mode 100644 index 0000000..245c35e --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_fly1/uml/okhttp.puml @@ -0,0 +1,50 @@ +@startuml +abstract class BaseBuidler{ + protected String url; + protected HashMap headers ; + protected HashMap parsms; + + public T url(String url); + public T addHeader(String key, String value); + public T addParams(String key, String value) ; + public abstract BaseRequest builder(); +} +class GetBuilder extends BaseBuidler{ + public BaseRequest builder(); +} +class PostBuilder extends BaseBuidler{ + private Object body; + public BaseRequest builder(); + public BaseBuidler body(Object body); +} + +abstract class BaseRequest { + protected String url; + protected HashMap headers; + protected HashMap parsms; + public BaseRequest(String url, HashMap headers, HashMap parsms){}; + public RequestCall buildCall(); + public abstract Request builderRequest(); +} +class GetRequst extends BaseRequest +class PostRequst extends BaseRequest + +GetRequst --> BaseBuidler +PostRequst --> BaseBuidler + + +class RequestCall { + private Call mCall; + private BaseRequest mBaseRequest; + public void execute(RequestListener listener); +} +RequestCall --> BaseRequest + +class OkHttpUtils{ + private OkHttpClient okHttpClient; + public GetBuilder get(); + public PostBuilder post(); + public void execute(RequestCall requestCall, final OnResponse onResponse) +} +OkHttpUtils --> RequestCall +@enduml \ No newline at end of file diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/OkHttpManager.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/OkHttpManager.java index 604a4d5..cec14d5 100644 --- a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/OkHttpManager.java +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/OkHttpManager.java @@ -42,6 +42,10 @@ public class OkHttpManager { return OkHttpManagerHolder.mHttpManager; } + static class OkHttpManagerHolder { + static OkHttpManager mHttpManager = new OkHttpManager(); + } + public void post(String url, Object body, OnResponse response) { String jsonBody = new Gson().toJson(body); MyCallBack callback = new MyCallBack(response); @@ -50,7 +54,7 @@ public class OkHttpManager { new Request .Builder() .url(url) - .post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"),jsonBody)) + .post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"), jsonBody)) .build()) .enqueue(callback); @@ -69,9 +73,4 @@ public class OkHttpManager { mHttpClient.newCall(request).enqueue(callBack); } - static class OkHttpManagerHolder { - static OkHttpManager mHttpManager = new OkHttpManager(); - } - - } diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/response/MyCallBack.java b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/response/MyCallBack.java index 2be40a0..5314477 100644 --- a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/response/MyCallBack.java +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/response/MyCallBack.java @@ -71,41 +71,34 @@ public class MyCallBack implements Callback { } @Override - public void onFailure( Call call, IOException e) { + public void onFailure(Call call, IOException e) { + sendMessage(ON_FAIL, e); + } + + private void sendMessage(int what, Object e) { Message message = new Message(); - message.what = ON_FAIL; + message.what = what; message.obj = e; mHandler.sendMessage(message); - } @Override - public void onResponse( Call call, Response response) { + public void onResponse(Call call, Response response) { try { if (response.isSuccessful()) { - Message message = new Message(); - message.what = ON_SUCC; String string = response.body().string(); - message.obj = string; - mHandler.sendMessage(message); + sendMessage(ON_SUCC, string); } else { - Message message = new Message(); - message.what = ON_FAIL; - mHandler.sendMessage(message); + sendMessage(ON_FAIL, new Exception("未知异常")); } } catch (Exception e) { - Message message = new Message(); - message.what = ON_FAIL; - message.obj = e; - mHandler.sendMessage(message); + sendMessage(ON_FAIL, e); } } public void onStart() { - Message message = new Message(); - message.what = ON_START; - mHandler.sendMessage(message); + sendMessage(ON_START, ""); } diff --git a/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/uml/OkHttpManager.puml b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/uml/OkHttpManager.puml new file mode 100644 index 0000000..38c3b83 --- /dev/null +++ b/okhttp3-java-example/app/src/main/java/com/mxdl/okhttp3/ok_man/uml/OkHttpManager.puml @@ -0,0 +1,27 @@ +@startuml +abstract class OnResponse{ + public abstract void onStart(); + public abstract void onSucc(T t); + public abstract void onFail(Exception e); + public abstract void onComplete(); +} +interface Callback { + void onFailure(Call call, IOException e); + void onResponse(Call call, Response response); +} + +class MyCallBack implements Callback { + private OnResponse mOnResponse; + private Handler mHandler = new Handler(Looper.getMainLooper()) + void onFailure(Call call, IOException e); + void onResponse(Call call, Response response); +} +MyCallBack *--> OnResponse + +class OkHttpManager { + private OkHttpClient mHttpClient; + public void get(String url, HashMap map, OnResponse response) + public void post(String url, Object body, OnResponse response) +} +OkHttpManager o--> MyCallBack +@enduml \ No newline at end of file diff --git a/okhttp3-java-example/app/src/main/res/layout/activity_main2.xml b/okhttp3-java-example/app/src/main/res/layout/activity_main2.xml index 5a577b8..5c35f99 100644 --- a/okhttp3-java-example/app/src/main/res/layout/activity_main2.xml +++ b/okhttp3-java-example/app/src/main/res/layout/activity_main2.xml @@ -15,7 +15,18 @@ android:text="异步的Post请求" android:onClick="addUser" /> - +