Versuchen Sie, httpCache Android zu nutzen?
Ich versuche, okhttpclient mit Retrofit zu verwenden, um das Caching einzurichten. Wie richte ich das Ablaufdatum ein und füge es meinem restApiManager hinzu? Ich bin mir nicht sicher, welcher Service sein soll ...
Hier ist der Code:
public class ApiManager {
private static final String API_URL = "ip";
public static AsynchronousApi getInstance() {
if(service == null) {
OkHttpClient okHttpClient = new OkHttpClient();
File cacheDir = new File(System.getProperty("java.io.tmpdir"), UUID.randomUUID().toString());
HttpResponseCache cache = null;
try {
cache = new HttpResponseCache(cacheDir, 1024);
} catch (IOException e) {
e.printStackTrace();
}
okHttpClient.setResponseCache(cache);
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API_URL)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(okHttpClient))
.setErrorHandler(new ErrorHandler() {
@Override
public Throwable handleError(RetrofitError arg0) {
if(arg0.getResponse().getStatus() == 404)
return new Exception("Url does not exists");
return new Exception(arg0.getMessage());
}
})
.build();
service = restAdapter.create(AsynchronousApi.class);
}
return service;
}
// //create adapter
private static final AsynchronousApi ASYNCHRONOUS_API = getInstance();
//call service to initiate
public static AsynchronousApi getAsyncApi() {
return ASYNCHRONOUS_API;
}
//Call interface
public interface AsynchronousApi {
//USER
//Register User
@FormUrlEncoded
@POST("/register")
public void registerUser(
@Field("email") String email,
@Field("username") String username,
@Field("password") String password,
Callback<UserResponse> callback); //
//Search User
@GET("/search_user")
public void searchUser(
@Query("username") String username,
Callback<UserResponse> callback); // userfound cache users