为了账号安全,请及时绑定邮箱和手机立即绑定

为 AsyncTask 实现一个常规的 JSON 解析器函数

为 AsyncTask 实现一个常规的 JSON 解析器函数

明月笑刀无情 2021-06-28 09:47:53
我正在开发一个应用程序,它有很多远程 JSON 调用来获取数据并在应用程序中实现。目前,我正在使用此函数从 URL 获取 JSON 数据并对其进行解析。但不幸的是,它会冻结应用程序,直到下载 JSON 文件。在谷歌上搜索,发现 AsyncTask 可以解决这个问题。我刚刚开始进行android应用程序开发。我试过但失败了。你们能帮我把这个功能实现到 AsyncTask 吗?public class JSONParser {String charset = "UTF-8";HttpURLConnection conn;DataOutputStream wr;StringBuilder result;URL urlObj;JSONObject jObj = null;JSONArray jAry = null;StringBuilder sbParams;String paramsString;public JSONObject makeHttpRequest(String url, String method, HashMap<String, String> params) {    sbParams = new StringBuilder();    int i = 0;    for (String key : params.keySet()) {        try {            if (i != 0) {                sbParams.append("&");            }            sbParams.append(key).append("=")                    .append(URLEncoder.encode(params.get(key), charset));        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        i++;    }    if (method.equals("POST")) {        try {            urlObj = new URL(url);            conn = (HttpURLConnection) urlObj.openConnection();            conn.setDoOutput(true);            conn.setRequestMethod("POST");            conn.setRequestProperty("Accept-Charset", charset);            conn.setReadTimeout(10000);            conn.setConnectTimeout(15000);            conn.connect();            paramsString = sbParams.toString();            wr = new DataOutputStream(conn.getOutputStream());            wr.writeBytes(paramsString);            wr.flush();            wr.close();        } catch (IOException e) {            e.printStackTrace();        }    } else if (method.equals("GET")) {        if (sbParams.length() != 0) {            url += "?" + sbParams.toString();        }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信