2016-11-27 95 views
0

我正嘗試使用VolleyStringRequest將圖像上傳到我的Imgur帳戶。我不知道如何處理響應,所以會發生什麼,因爲它沒有收到Imgur的迴應,所以會重新上傳。該圖像最終被上傳了幾次,直到TimeoutError被拋出。我怎麼能確保這不會發生,因爲我無法檢測到從Imgur服務器返回的響應?
這裏是我使用它變換爲Base64後到圖像上載方法:

使用Volley將圖像上傳到IMGUR返回TimeoutError

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); 

} 

回答

0

更改DefaultRetryPolicy上請求具有較大的期滿時間幀中,由於上載的圖像可以採取位。另外,對於雙上傳,確保有設置爲0

new DefaultRetryPolicy(LONGER_TIMEOUT, 0, 0);

+0

我這樣做已經,但它仍然上傳圖像不止一次 – Manny265

+0

你的MAX_RETRIES設置爲0,更MAX_RETRIES?請參閱編輯。 – Submersed

+0

根據需要將重試設置爲零似乎只上傳一次圖像,但TimeOut和SSL錯誤仍顯示出來 – Manny265