在Android上传文件

时间:2016-01-08 14:55:24

标签: java android

在Android中,如何将二进制文件上传到服务器似乎很混乱,因为有些库已经过时,而且缺乏信息,现在应该采用哪种方法。 任何人都可以指出如何将二进制文件或任何文件上传到Android中的服务器吗?

我不想使用任何依赖项,除非它们确实是必需的。

1 个答案:

答案 0 :(得分:0)

由于缺乏信息,这可能是什么样的服务器,我发现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会自行下载)