I often use a similar scheme work with an API project. Can it be made easier, or is there a standard approach?
This class creates an API request:
public class ApiRequestCreator {
private static String TEST_API_REQUEST = "http://jsonplaceholder.typicode.com/posts";
public static Request createTestApiRequest(){
return new Request.Builder()
.url(TEST_API_REQUEST)
.build();
}
}
This class execute the request:
public class ApiRequestExecutor {
private final OkHttpClient client = new OkHttpClient();
public void run(final Request request, final ApiMethodListener apiMethodListener) {
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void ...voids) {
try {
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
apiMethodListener.result(result);
}
}.execute();
}
}
For all of this to start:
new ApiRequestExecutor().run(ApiRequestCreator.createTestApiRequest(), call_back_interface_here);