我正在开发一个应用程序,它有很多远程 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(); }
添加回答
举报
0/150
提交
取消