2017-02-22 27 views
0

上傳視頻時,我使用此代碼,以我的視頻上傳到改造服務器ETIMEDOUT(連接超時)使用改裝2

private String uploadVideoToServer(String pathToVideoFile) { 
    Log.v("test_get", "get the file"); 
    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("http://xxx.xxx.xxx.xxx:xxxx/") 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    SmileVideoAPI service = retrofit.create(SmileVideoAPI.class); 
    MediaType MEDIA_TYPE = MediaType.parse("multipart/form-data"); 
    File videoFile = new File(pathToVideoFile); 
    //RequestBody videoBody = RequestBody.create(MEDIA_TYPE, videoFile); 
    ProgressRequestBody videoBody = new ProgressRequestBody(videoFile, this); 
    MultipartBody.Part vFile = MultipartBody.Part.createFormData("file", videoFile.getName(), videoBody); 
    RequestBody description = createPartFromString("desc"); 
    Log.v("test_get", "before uploading"); 
    Call<ResponseBody> call = service.uploadVideo(description, vFile); 
    Log.v("test_get", "after uploading"); 
    call.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
      if (response.isSuccessful()) { 
       Log.i("mok", "S"); 
       ResponseBody rb = response.body(); 
       Log.i("mok", rb.toString()); 
       mProgress.setProgress(100); 
       Intent intent = new Intent(UploadActivity.this, UploadCompleteActivity.class); 
       startActivity(intent); 
       finish(); 
      } else { 
       Log.i("mok", "F"); 
       ResponseBody rb = response.errorBody(); 
       Log.i("mok", rb.toString()); 
      } 
     } 

     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) { 
      t.printStackTrace(); 
      Log.i("mok", t.getCause() + ""); 
      Log.i("mok", "T"); 
      Toast.makeText(getApplicationContext(), "Upload fail", Toast.LENGTH_SHORT).show(); 
      Intent intent = new Intent(UploadActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
    return msg; 
} 

它載的連接設置第一時間的視頻,但是,不時拋出下面的錯誤。

libcore.io.ErrnoException:isConnected失敗:ETIMEDOUT(連接超時)

任何人都可以解釋我爲什麼會這樣,怎麼能解決呢?現在,我正在研究如何關閉我的連接,因爲我懷疑這可能是因爲未關閉連接。

回答

0

這是造成,因爲連接不被釋放, 我通過把一個

response.body().close(); 
解決了這個
相關問題