I want parse a json values using volley with interface callback,below mwntioned wat i am tried,
//in gradle file.
implementation 'com.android.volley:volley:1.1.0'
public class AppController extends MultiDexApplication {
public static final String TAG = AppController.class.getSimpleName();
private RequestQueue mRequestQueue;
private static AppController mInstance;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(AppController.this);
}
public static synchronized AppController getInstance() {
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
getRequestQueue().add(req);
}
public <T> void addToRequestQueue(Request<T> req) {
req.setTag(TAG);
getRequestQueue().add(req);
}
public void cancelPendingRequests(Object tag) {
if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}
// класс для анализа данных с помощью строкового запроса
public class ServiceRequest {
private Context context;
private ServiceListener mServiceListener;
private StringRequest stringRequest;
public interface ServiceListener {
void onCompleteListener(String response);
void onErrorListener();
}
public ServiceRequest(Context context) {
this.context = context;
}
public void cancelRequest()
{
if (stringRequest != null) {
stringRequest.cancel();
}
}
public void makeServiceRequest(final String url, int method, final HashMap<String, String> param,ServiceListener listener) {
this.mServiceListener=listener;
stringRequest = new StringRequest(method, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
mServiceListener.onCompleteListener(response);
} catch (Exception e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
try {
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
} else if (error instanceof AuthFailureError) {
} else if (error instanceof ServerError) {
} else if (error instanceof NetworkError) {
} else if (error instanceof ParseError) {
}
} catch (Exception e) {
}
mServiceListener.onErrorListener();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return param;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
return headers;
}
};
//to avoid repeat request Multiple Time
DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(0, -1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(retryPolicy);
stringRequest.setRetryPolicy(new DefaultRetryPolicy(30000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
stringRequest.setShouldCache(false);
AppController.getInstance().addToRequestQueue(stringRequest);
}
}
// метод cAlling
private void PostRequest(String Url) {
mRequest = new ServiceRequest(HomeActivity.this);
mRequest.makeServiceRequest(Url, Request.Method.GET, null, new ServiceRequest.ServiceListener() {
@Override
public void onCompleteListener(String response) {
Log.d("reponse", response);
JSONObject object = new JSONObject(response);
}
@Override
public void onErrorListener() {
indicator.setVisibility(View.GONE);
}
});
}
Ia этот путь правильный