Hy guys!
我正在与另一个正在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
-best到目前为止(对于字符串,图像请求),但它需要额外的库来将图像发送到服务器(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
-I使用StringRequest
将字符串作为基本HashMap<String,String>
发送到服务器(使用Google开发人员的Volley库)
- 服务器解码字符串a保存文件
答案 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