Загрузка изображений в IMGUR с использованием Volley возвращает TimeoutError
Я пытаюсь загрузить изображение в свою учетную запись Imgur, используя Volley
StringRequest
, Я не уверен, как обработать ответ, поэтому происходит повторная загрузка, поскольку он не получил ответа от Imgur. Изображение заканчивается загрузкой пару раз, пока TimeoutError
брошен Как я могу убедиться, что этого не происходит, так как я не могу обнаружить ответ, возвращаемый с сервера Imgur?
Вот метод, который я использую для загрузки изображения после его преобразования в Base64:
public void uploadImage(View view) {
Log.i(TAG,"start upload");
StringRequest uploadRequest = new StringRequest(Request.Method.POST, AppConst.IMGUR_ADD_IMG, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "finished image upload");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, error.toString());
Log.e(TAG,"finish/error upload");
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + token);
return headers;
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put(AppConst.IMGUR_TAG_IMAGE, encodeImage(selectedImg));
params.put(AppConst.IMGUR_TAG_TITLE, "title");
params.put(AppConst.IMGUR_TAG_NAME, String.valueOf(System.currentTimeMillis()));
return params;
}
};
AppController.getInstance().addToRequestQueue(uploadRequest);
}
1 ответ
Решение
Измените DefaultRetryPolicy в запросе, чтобы иметь больший срок действия, так как загрузка изображения может занять немного времени. Кроме того, для двойной загрузки убедитесь, что max_retries установлено в 0.
new DefaultRetryPolicy(LONGER_TIMEOUT, 0, 0);