Android:什么是最好的文件HTTP库?

时间:2015-07-30 13:15:29

标签: android network-programming android-volley retrofit loopj

Hy guys!

我正在与另一个正在java工作的人一起研究一个android项目(server-side(php))。在我的申请中,我需要调用POSTGET方法才能upload files to server, download files, send Strings, byte[] array etc

我的问题是:在我的案例中使用的最佳库是什么?(我认为我的文件不会超过3mb

我是android新手所以我到目前为止尝试过:

1 Android Asynchronous Http Client(com.loopj.android:android-async-http:x.x.x) - 我们放弃了这个,因为它不是来自一个被信任的"来源

2 AsyncTask+HttpClient+HttpPost - 我们也放弃了这个

第3 Volley library -best到目前为止(对于字符串,图像请求),但它需要额外的库来将图像发送到服务器(org.apache.httpcomponents:httpmime:4.5) - 我跟着来自here的例子,但我得到了异常,错误,库错误(重复),并且在没有其他显示的情况下从未设法解决问题。 - 所以我也放弃了这个

My question posted for volley library here

4. 现在我正在考虑使用Retrofit,但不知道它符合我的需求: - 发送字符串和所有类型的原始数据 - 将图像/图像发送到服务器(与Api key一起) - 从服务器下载图像/图像

告诉我,如果我在某处错了,或者我错过了使用上面指定的库的东西。我设法发送所有这些的简单数据,但我没有设法发送Filesloopj库除外)。

您认为我应该回到Volley,还是开始阅读RetrofitVolley似乎是最灵活的,但不适用于uploading files

欢迎任何参考或建议!提前谢谢!

更新 我找到了解决问题的可能方法: - 我将我的文件/图片转换为byte array,将encode转换为base64 string -I使用StringRequest将字符串作为基本HashMap<String,String>发送到服务器(使用Google开发人员的Volley库) - 服务器解码字符串a保存文件

2 个答案:

答案 0 :(得分:2)

我认为非常适合你的是AndroidAsync。 您可以在这里的GitHub存储库中找到更多相关信息:https://github.com/koush/AndroidAsync

作为如何将文件上传到服务器的示例:

AsyncHttpPost post = new AsyncHttpPost("http://myservercom/postform.html");
MultipartFormDataBody body = new MultipartFormDataBody();
body.addFilePart("my-file", new File("/path/to/file.txt");
body.addStringPart("foo", "bar");
post.setBody(body);
AsyncHttpClient.getDefaultInstance().execute(post, new StringCallback() {
    @Override
    public void onCompleted(Exception e, AsyncHttpResponse source, String result) {
        if (e != null) {
            ex.printStackTrace();
            return;
        }
        System.out.println("Server says: " + result);
    }
});

您还可以在这里找到NanoHTTPD:https://github.com/NanoHttpd/nanohttpd

我希望这会对你有所帮助。

答案 1 :(得分:0)

您应该尝试HttpURLConnection将数据发送到服务器非常容易。

https://developer.android.com/training/basics/network-ops/connecting.html