大家好!
我正在和另一个在 java
上工作的人一起开发一个 android 项目(server-side(php)
) .在我的应用程序中,我需要调用 POST
和 GET
方法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
吗? ,或开始阅读 Retrofit
? Volley
似乎是最灵活的,但不适用于 uploading files
.
欢迎任何引用或建议!提前致谢!
更新:
我为我的问题找到了可能的解决方案:
-我将我的文件/图像转换为 byte array
和 encode
它到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/