2013-06-27 36 views
1

我試圖從URL下載文件。服務器運行apache httpd並首先要求用戶名密碼登錄/認證。然後當我把這個URL放到瀏覽器中時,我得到下載提示下載這個zip文件。Java:URL請求認證時從URL下載文件

我該如何在Java中做到這一點?我正在學習Java,我來自Python背景。任何幫助是極大的讚賞。

編輯:服務器在HTTPS身份驗證上運行。

+0

那是HTTP(基本)身份驗證或基於Cookie的自定義系統(表)? – SLaks

+0

它使用HTTPS而不是HTTP基本。 – user1757703

+0

HTTPS與我所問的問題是正交的。這兩個選項都可以通過HTTP或HTTPS使用。 (雖然他們不應該與HTTP一起使用) – SLaks

回答

0

如果服務器使用基本身份驗證,你應該能夠通過在URL中指定的用戶名/密碼來獲取資源:http://user:[email protected]/path/filename.ext

瀏覽器支持這個,所以你可以在瀏覽器中迅速試試吧。

+0

我試過這個,它不起作用。服務器使用HTTPS。 – user1757703

1

或者,如果你想成爲它的安全:

HttpResponse res; 
DefaultHttpClient httpclient = new DefaultHttpClient(); 
String authorizationString = "Basic " + Base64.encodeToString(("admin" + ":" + "").getBytes(), Base64.NO_WRAP); //this line is diffe 
authorizationString.replace("\n", ""); 
try { 
    HttpGet request = new HttpGet(URI.create(url)); 
    request.addHeader("Authentication",authorizationString); 
    res = httpclient.execute(request); 
    return new MjpegInputStream(res.getEntity().getContent());    
} catch (ClientProtocolException e) {e.printStackTrace();} 
} catch (IOException e) {e.printStackTrace();}