我正在开发一个新的 Android 应用程序,我想正确地组织所有组件 - 网络调用类、JSON 解析类等。我正在使用 Okhttp 进行网络调用;经过大量研究,我能够像这样构造我的代码:
我的 NetworkUtil 类:
public class NetworkUtil {
public static void getData(String url, final OkHttpListener listener){
OkHttpClient client = new OkHttpClient();
// GET request
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
listener.onFailure(request, e);
}
@Override
public void onResponse(Response response) throws IOException {
listener.onResponse(response);
}
});
}
我的网络回调接口:
public interface OkHttpListener {
void onFailure(Request request, IOException e);
void onResponse(Response response) throws IOException;
}
这是我的活动课:
OkHttpListener listener = new OkHttpListener() {
@Override
public void onFailure(Request request, IOException e) {
Log.e(LOG_TAG, e.toString());
}
@Override
public void onResponse(Response response) throws IOException {
String responseBody = response.body().string();
Log.i(LOG_TAG, responseBody);
}
};
String url = "http://myserver/api/getvalues";
OkHttpUtils.getData(url, listener);
String url1 = "http://myserver/api/getvalues/123";
OkHttpUtils.getData(url1, listener);
}
以下是我面临的问题:
我想根据不同的事件从 Activity/Fragment 进行多个网络调用,如何设计 Activity 类以使我能够发出多个请求。我还想为将在活动中使用的所有常用方法保留一个单独的类(可能是一个应用程序类)。我想让我的架构具有凝聚力。
我想在一个单独的类中解析 JSON 响应并将结果传递给我的 Activity 类。如何在单独的类中解析 JSON 响应并将结果从 NetworkUtil 类中的 onSuccess() 方法传递给我的 Activity/Fragment 类
我想在整个项目中不使用库或使用非常少的库(至少对于 JSON 解析部分),此时我将只使用 okhttp。
如果有人可以将我推荐给 git 存储库或示例项目以进行查看,那将非常有帮助。