首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java/Android网络请求

Java/Android网络请求
EN

Stack Overflow用户
提问于 2015-08-28 21:17:16
回答 1查看 36关注 0票数 0

我被告知要使用同步任务。但我想知道。是否可以在正常功能中提出网络请求?现在,我需要一直使用这样的代码块:

代码语言:javascript
运行
复制
   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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-28 21:43:15

您可以使用不同类型的解决方案来运行请求。不过,请记住,您的调用应该是异步的,以避免冻结UI和获取NetworkOnMainThreadException。因此,作为原始响应,不应该在“正常函数”中运行raw请求。其他的解决办法是

  • 装载机
  • RxJava
  • 经典线

但是,AsyncTasks是一种很好而且更容易完成这项工作的方法。为了避免重写这样的代码块,请定义单独的类而不是innerClasses:

MyAsynctask.java:

代码语言:javascript
运行
复制
public class MyAsyncTask extends AsyncTask<String, String, Connection.Response> {
//you code...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32279894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档