Java/AndroidWebRequesting
我被告知使用异步任务。但我想知道。是否可以在普通函数中发出webrequest?现在我需要一直使用这样的代码块:Java/AndroidWebRequesting,java,android,jsoup,Java,Android,Jsoup,我被告知使用异步任务。但我想知道。是否可以在普通函数中发出webrequest?现在我需要一直使用这样的代码块: private static HashMap<String, String> retrn = new HashMap<String,String>(); private static class Web extends AsyncTask<String, String, Connection.Response> { p
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;
}
private static HashMap retrn=new HashMap();
私有静态类Web扩展异步任务{
受保护的连接。响应doInBackground(字符串…调制解调器){
Connection.Response res=null;
ArrayList ModList=ToAr(调制解调器);
ModList.remove(modefiers[0]);
试一试{
res=Jsoup.connect(调制解调器[0])
.data(ModList.toArray(新字符串[ModList.size()]))
.method(Connection.method.POST)
.execute();
Document doc=res.parse();
}捕获(例外e){
e、 printStackTrace();
}
返回res;
}
受保护的void onPostExecute(Connection.Response结果){
retrn.put(result.url().toString(),result.body());
}
}
专用静态ArrayList ToAr(对象…列表器){
ArrayList Ar=新的ArrayList();
for(对象ari:listr){
Ar.add(ari);
}
返回Ar;
}
您可以使用不同类型的解决方案来运行请求。不过,请记住,您的调用应该是异步的,以避免冻结UI和获取NetworkOnMainThreadException。因此,作为原始响应,不应该在“正常函数”中运行webrequests。其他解决方案将是
- 装载机
- RxJava
- 经典线
public class MyAsyncTask extends AsyncTask<String, String, Connection.Response> {
//you code...
}
公共类MyAsyncTask扩展了AsyncTask{
//你的代码。。。
}
因此,无法仅使用诸如:getwebcontent(字符串url)之类的函数?如果您这样做,而没有异步性(只是一个“正常”方法),您将获得NetworkOnMainThread异常。此外,它是一种反模式。所以,不。