2016-01-08 93 views
2

在Android中,如何將二進制文件上傳到服務器似乎非常混亂,因爲一些圖書館已經過時,而且缺乏現在應該使用的方法。 任何人都可以給如何上傳二進制文件或任何文件到Android的服務器的指針?上傳Android中的文件

我不想使用任何依賴關係,除非他們真的需要。

+0

嘗試翻新它對於任何類型的服務器交互都非常有幫助! – Joh

回答

1

在信息缺乏什麼樣的服務器,這可能是,我發現this

OkHttpClient client = new OkHttpClient(); 
OutputStream out = null; 
try { 
    URL url = new URL("http://www.example.com"); 
    HttpURLConnection connection = client.open(url); 
    for (Map.Entry<String, String> entry : multipart.getHeaders().entrySet()) { 
     connection.addRequestProperty(entry.getKey(), entry.getValue()); 
    } 
    connection.setRequestMethod("POST"); 
    // Write the request. 
    out = connection.getOutputStream(); 
    multipart.writeBodyTo(out); 
    out.close(); 

    // Read the response. 
    if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { 
     throw new IOException("Unexpected HTTP response: " 
       + connection.getResponseCode() + " " + connection.getResponseMessage()); 
    } 
} 
finally { 
    try { if (out != null) out.close(); } 
    catch (Exception e) {} 
} 

我認爲你提到的棄用/過時的庫將ApacheHttpClient,因此,我建議OkHttp(即使用HttpUrlConnection我相信)。

要添加OkHttp如扶養您可以編輯build.gradle,如:

dependencies { 
    //some other dependencies 
    compile 'com.squareup.okhttp:okhttp:2.7.2' 
} 

可用版本可以在這裏找到:mvnrepository(無需手動下載,只需添加它們像上面,gradle這個會下載它們本身)

+0

我應該使用哪些依賴項以及如何添加它們? –

+0

我更新了我的答案 – sschrass

+0

嘿,看起來「客戶端」沒有叫做「open()」的方法。 –