1-й раз не получая ответ от северного залпа андроида - PullRequest
2 голосов
/ 07 марта 2019

Код в классе Java:

public String POST(String url, final Map<String, String> params, final VolleyCallBack callBack) {

        //RequestFuture<String> requestFuture = new RequestFuture.newFuture();
        RequestFuture<String> future = RequestFuture.newFuture();
        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("Loading....");
        progressDialog.show();
        StringRequest stringRequest = new StringRequest(
                Request.Method.POST,
                url,

                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            progressDialog.dismiss();

                            val = jsonObject.getString("message");
                            callBack.onSuccess();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                progressDialog.dismiss();
                ToastMsg(error.getMessage() + " " + error.getStackTrace()[0]);
            }
        }
        ) {
            @Override
            protected Map<String, String> getParams() {
                return params;
            }
        };

        RetryPolicy mRetryPolicy = new DefaultRetryPolicy(
                0,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        stringRequest.setRetryPolicy(mRetryPolicy);

        RequestQueue requestQueue = Volley.newRequestQueue(context);
        stringRequest.setShouldCache(false);
        requestQueue.add(stringRequest);


        return val;
    }

Код в классе деятельности:

val = db.POST(Constants.URL_FacultyLogin, map);

В первый раз, когда я нажимаю на кнопку, я не получаю ответ от сервера, но во-вторых, я получаю ответ, может кто-нибудь помочь мне, почему бы не в первый раз.

1 Ответ

1 голос
/ 07 марта 2019

Решение состоит в том, чтобы использовать asynctask См. Это

 @Override
        protected String doInBackground(String... params) {
            //Call your volley function here
        }



@Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
        //The result variable holds your val returned from volley 
       }
...