使用Volley将图像上传到IMGUR会返回TimeoutError

时间:2016-11-27 20:35:14

标签: android android-volley imgur

我正在尝试使用Volley StringRequest将图片上传到我的Imgur帐户。我不知道如何处理响应,所以会发生什么,因为它没有收到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 个答案:

答案 0 :(得分:0)

将请求上的DefaultRetryPolicy更改为具有更长的到期时间范围,因为上载图像可能需要一些时间。此外,对于双重上传,请确保将max_retries设置为0.

new DefaultRetryPolicy(LONGER_TIMEOUT, 0, 0);