2017-03-23 14 views
1

내 응용 프로그램에서 파일을 다운로드하려면 urlconnection 백그라운드 서비스를 사용하고 있습니다. 요청에는 권한 부여를 위해 서버에 전달되어야하는 토큰이 필요합니다. 코드가 제대로 작동합니다. 여기 DownloadManager 요청 요청 속성을 설정하십시오.

  URL url = new URL(fileURL); 

      HttpURLConnection conection = (HttpURLConnection) url.openConnection(); 
      conection.setRequestMethod("GET"); 
      conection.setRequestProperty("User-Agent", "USER_AGENT"); 
      conection.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); 
      conection.setRequestProperty("Authorization", "Token " + token);// evince 
      conection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); 
      conection.setRequestProperty("Accept-Encoding", "identity"); 

      int responseCode = conection.getResponseCode(); 

가 지금은 안드로이드의 DownloadManager를 사용하는 다운로드 프로세스를 수정할의 .. 조각이다, 문제는 난 그냥 위의 코드와 같은 DownloadManager의 요청 객체의 모든 요청 속성을 설정하는 방법이다. 이러한 속성을 설정하지 않으면 다운로드가 계속 실패하기 때문입니다.

미리 감사드립니다.

답변

1

user-agent와 동일한 문제가있었습니다. 이것은 나를 위해 일했다 :

DownloadManager dManager = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE); 
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(fileUrl + "?sid=" + sessionId)); 

request.addRequestHeader("User-Agent", System.getProperty("http.agent") + " myApp_app/" + Utils.appVersionNumber()); 

dManager.enqueue(request); 
0

나는 연구 후 이것을하는 방법을 마침내 생각했다.

 DownloadManager downloadManager = (DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); 
     DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 
     request.addRequestHeader("Authorization", "Token " + token); 
     request.addRequestHeader("Accept-Language", "en-US,en;q=0.5"); 
     request.addRequestHeader("Content-Type", "application/json; charset=UTF-8"); 
     request.addRequestHeader("Accept-Encoding", "identity"); 
     request.addRequestHeader("User-Agent", "USER_AGENT"); 

     File direct = new File(Environment.getExternalStorageDirectory() + "/Abeti"); 
     if (!direct.exists()) { 
      direct.mkdirs(); 
     } 

     request.setDestinationInExternalPublicDir("/Abeti", filenamex); 
     request.setTitle(cw.getTitle()); 


     enqueue = downloadManager.enqueue(request);