我被告知要使用同步任务。但我想知道。是否可以在正常功能中提出网络请求?现在,我需要一直使用这样的代码块:
private static HashMap<String, String> retrn = new HashMap<String,String>();
private static class Web extends AsyncTask<String, String, Connection.Response> {
protected Connection.Response doInBackground(String... modefiers) {
Connection.Response res = null;
ArrayList<String> ModList = ToAr(modefiers);
ModList.remove(modefiers[0]);
try {
res = Jsoup.connect(modefiers[0])
.data(ModList.toArray(new String[ModList.size()]))
.method(Connection.Method.POST)
.execute();
Document doc = res.parse();
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
protected void onPostExecute(Connection.Response result) {
retrn.put(result.url().toString(), result.body());
}
}
private static ArrayList ToAr(Object... listr){
ArrayList Ar = new ArrayList();
for (Object ari : listr){
Ar.add(ari);
}
return Ar;
}
发布于 2015-08-28 21:43:15
您可以使用不同类型的解决方案来运行请求。不过,请记住,您的调用应该是异步的,以避免冻结UI和获取NetworkOnMainThreadException。因此,作为原始响应,不应该在“正常函数”中运行raw请求。其他的解决办法是
但是,AsyncTasks是一种很好而且更容易完成这项工作的方法。为了避免重写这样的代码块,请定义单独的类而不是innerClasses:
MyAsynctask.java:
public class MyAsyncTask extends AsyncTask<String, String, Connection.Response> {
//you code...
}
https://stackoverflow.com/questions/32279894
复制相似问题