我是Android开发的初学者,在应用程序上工作。我想知道我应该使用传统方法进行GET / POST请求(即 URLConnection,HttpClient ),还是应该使用第三方库,例如 OkHttp 或毕加索即可。我应该使用哪种方法请提供指导。谢谢
答案 0 :(得分:2)
不使用HttpClient,它已在Marshmallow中弃用并删除。
URLConnection很好,但它在阅读响应时没有提供任何帮助,即你必须自己阅读流,这很快就会很痛苦。此外,您必须确保您的呼叫是异步的,这意味着添加越来越多的代码...不完美。
所以,你留下了OkHttp或Volley。这些是“低级”网络库,它们只能帮助您发出请求和读取响应。他们做得很好,继续阅读他们的文档。
除此之外,您可以将其他库用于更具体的用途。如果您需要调用格式良好的REST API,我建议使用基于OkHttp的Retrofit。
如果您需要检索图像,Picasso就是完美的(并且还利用了OkHttp)。我想“市场”上的其他人也很好(Glide,Fresco等),但我还没有使用过。
查找一些比较所有这些库的性能和易用性的文章。在没有最低评估的情况下,您永远不应该添加lib。
最后...... https://github.com/futurice/android-best-practices
干杯。
答案 1 :(得分:1)
你很好地使用传统的GET / POST方法。我给你举个例子。 为此,您必须创建一个使用AsyncTask
扩展的类public class getData extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String response = null;
try {
URL url = new URL("Write you url here");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
//在这里你可以编写你的方法 - GET或POST
InputStream in = new BufferedInputStream(conn.getInputStream());
response = IOUtils.toString(in, "UTF-8");
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null) {
try {
JSONArray array = new JSONArray(result);
for (int i = 0; i < array.length(); i++) {
JSONObject c = array.getJSONObject(i);
String id = c.getString("tag");
Log.e("", "TAG : - " + id);
Category category = new Category(id);
albumsList.add(category);
}
} catch (Exception e) {
Log.e("", "Home Exception : " + e.toString());
}
}
pDialog.dismiss();
getActivity().runOnUiThread(new Runnable() {
public void run() {
getList_category().setAdapter(new MenuAdapter(getActivity(), albumsList, 0));
}
});
}
}
您必须在onCreate方法或您想要调用它的任何地方调用此类。
new getData().execute();
如上所述。
快乐的代码,乐于助人....