大家好!
我正在做一个android项目(java
),另一个人在做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
)-我从这里跟随了这样的例子,但我得到了异常,错误,库错误(重复),从来没有设法解决一个没有其他显示。-所以我也放弃了这个
My question posted for volley library
here
4。现在我正在考虑使用Retrofit
,但不知道它适合我的需要:发送字符串和所有类型的原始数据-发送图像到服务器(与Api key
一起)-从服务器下载图片
告诉我,如果我错了,或者如果我错过了与上面指定的库一起工作的东西。我设法用所有这些发送简单的数据,但我没有设法发送Files
(loopj
库除外)。
你认为我应该回到Volley
,还是开始阅读Retrofit
?Volley
似乎是最灵活的一个,但不是uploading files
。
欢迎任何参考或建议!提前感谢!
更新:我找到了一个可能的解决方案:-I将我的文件/图像转换为byte array
和encode
到base64 string
-I发送字符串到服务器作为基本的StringRequest
与HashMap<String,String>
(使用谷歌开发人员的Volley库)-服务器解码字符串保存文件
我认为一个非常适合你的是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
你应该试试HttpURLConnection
,它真的很容易发送数据到服务器。