Залп с использованием JsonParsing с интерфейсом - PullRequest
0 голосов
/ 25 декабря 2018
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 этот путь правильный

...