Как использовать залп в почтовом запросе? - PullRequest
0 голосов
/ 29 мая 2019

Я новичок в Android Studio и собираюсь использовать библиотеку залпов для получения данных с сервера.

Запрос json следующий:

{
  "method": "authenticate",
  "params": [
    "dummyuser",
    "dummy"
  ],
  "id": "1",
  "jsonrpc": "2.0"
}

Ниже приведен мой код

RequestQueue requestQueueV1= Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequestV1 = new StringRequest(Request.Method.POST, server_url + AppConfig.VERSION1_URL, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
            // response is JSONObject
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Toast.makeText(SettingsActivity.this, "Error occurred.", Toast.LENGTH_LONG).show();
    }
}) {
     @Override
     protected Map<String, String> getParams() {
         Map<String, String> request_body = new HashMap<String, String>();
         request_body.put("method", "authenticate");
         request_body.put("id", "1");
         request_body.put("jsonrpc", "2.0");
         JSONArray params = new JSONArray();
         params.put(user_name);
         params.put(password);
         request_body.put("params", params.toString());
         return request_body;
    }
    @Override
    public String getBodyContentType() {
         return "application/json; charset=utf-8";
    }

};
requestQueueV1.add(stringRequestV1);

У меня ошибка "com.android.volley.TimeoutError".Как я могу исправить эту ошибку?

И следовать ответу

{
    "result": {
        "success": true,
        "items": [
            {
                "apiKey": "4902ad6c957144aba697995f8",
                "userID": "41426322"
            }
        ],
        "total": 1
    },
    "id": "1",
    "jsonrpc": "2.0"
}

Как передать этот объект json ответа, когда выборка прошла успешно.

Ниже приведен скриншот моего почтальона.:

postman screenshot1

postman screenshot2

1 Ответ

0 голосов
/ 29 мая 2019

Добавьте это ниже вашего stringRequestV1 перед добавлением его в очередь запросов.

stringRequestV1.setRetryPolicy(new DefaultRetryPolicy(4000, 2, 2f));

Где 4000 - TIMEOUT_MS , 2 - DEFAULT_MAX_RETRIES ,2f - это DEFAULT_BACKOFF_MULT .

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

stringRequestV1.setRetryPolicy(new DefaultRetryPolicy(
5000, 
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
...