使用 Volley returns TimeoutError 将图像上传到 IMGUR
Uploading images to IMGUR using Volley returns TimeoutError
我正在尝试使用 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);
}
更改请求的 DefaultRetryPolicy 以具有更长的到期时间范围,因为上传图像可能需要一些时间。此外,对于双重上传,请确保将 max_retries 设置为 0。
new DefaultRetryPolicy(LONGER_TIMEOUT, 0, 0);
我正在尝试使用 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);
}
更改请求的 DefaultRetryPolicy 以具有更长的到期时间范围,因为上传图像可能需要一些时间。此外,对于双重上传,请确保将 max_retries 设置为 0。
new DefaultRetryPolicy(LONGER_TIMEOUT, 0, 0);