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

标签 android network-programming android-volley retrofit loopj

大家好!

我正在和另一个在 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 -迄今为止最好的(对于字符串,图像请求),但它需要额外的库才能将图像发送到服务器(org.apache.httpcomponents:httpmime:4.5) -我遵循了 here 中的示例但我遇到了异常、错误、库错误(重复),并且在没有其他出现的情况下从未设法解决一个问题。 -所以我也放弃了这个

My question posted for volley library here

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

请告诉我我是否在某处有误,或者我是否遗漏了使用上面指定的库的某些内容。我设法用所有这些发送了简单的数据,但我没能发送 Files (loopj 库除外)。

你觉得我应该回到Volley吗? ,或开始阅读 RetrofitVolley似乎是最灵活的,但不适用于 uploading files .

欢迎任何引用或建议!提前致谢!

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

最佳答案

我认为 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

希望对您有所帮助。

关于Android:最好的 HTTP 文件库是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31724879/

相关文章:

android - 不暴露我依赖的jar文件

android - 在真机上运行应用程序时,如何查看应用程序的错误信息?

c - pcap_loop 只是等待

android - Volley 和位图缓存

javascript - 如何强制固定定位元素内的元素响应 Android 网络浏览器上的 javascript onclick 事件?

android - 为什么 android 传感器中的三个(冗余?)加速度计变体

network-programming - 发送tinygrams如何导致网络拥塞?

ios - "sudo sysctl net.inet.ip.fw.enable=1"不适用于 macOS Sierra

android - Android 上使用 Volley 网络库的 SSL Pinning

java - NoSuchMethodError Request.setTag