2012-06-08 21 views
3

我想這如何在我的代碼中使用Base64.java文件?

import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class HttpBasicAuth { 

public static void downloadFileWithAuth(String urlStr, String user, String pass, String outFilePath) { 
    try { 
     // URL url = new URL ("http://ip:port/download_url"); 
     URL url = new URL(urlStr); 
     String authStr = user + ":" + pass; 
     String authEncoded = Base64.encodeBytes(authStr.getBytes()); 

     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("GET"); 
     connection.setDoOutput(true); 
     connection.setRequestProperty("Authorization", "Basic " + authEncoded); 

     File file = new File(outFilePath); 
     InputStream in = (InputStream) connection.getInputStream(); 
     OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 
     for (int b; (b = in.read()) != -1;) { 
      out.write(b); 
     } 
     out.close(); 
     in.close(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 
  1. 它工作正常,但給出了一個錯誤「無法找到符號錯誤Base64Encoder」
  2. 下載的文件Base64.java

現在我不知道如何在我的項目中使用這個文件來刪除錯誤。 你能告訴我如何使用Base64.java文件去除錯誤嗎?

感謝您的期待。

+0

你從哪個庫下載了Base64.java?你應該包括整個庫,而不是複製和編譯Base64.java。 – dejuknow

+0

從這裏http://sourceforge.net/projects/iharder/files/base64/2.3/我已經下載了它。 目前我沒有得到任何東西,我是新來的java,所以你可以幫我,現在做什麼? –

+0

請看看這裏:[鏈接](http://stackoverflow.com/questions/469695/decode-base64-data-in-java)。它會告訴你一些常用的Base64庫以及如何使用它們。 – dejuknow

回答

1

需要將Base64導入到您的代碼中。導入取決於您的源文件。 Apache Commons Codec有一個堅實的Base64實現。

例如:

import org.apache.commons.codec.binary.Base64; 
+0

它提供了類,接口或枚舉期望:-(。現在該怎麼辦? –

+0

請發佈完整的錯誤消息。 – Azi

+0

他得到一個錯誤,找到Base64Encoder符號Base64類可能有其他依賴關係 – dejuknow

3

你可以只使用Base64編碼/解碼能力,是存在於JDK本身。該包裝javax.xml.bind中包括類DatatypeConverter提供的方法來打印/解析到各種形式,包括

static byte[] parseBase64Binary(String lexicalXSDBase64Binary) 
static String printBase64Binary(byte[] val) 

只需導入javax.xml.bind.DatatypeConverter和使用所提供的方法。

相關問題