我正在開發(fā)一個(gè)應(yīng)用程序,它有很多遠(yuǎn)程 JSON 調(diào)用來(lái)獲取數(shù)據(jù)并在應(yīng)用程序中實(shí)現(xiàn)。目前,我正在使用此函數(shù)從 URL 獲取 JSON 數(shù)據(jù)并對(duì)其進(jìn)行解析。但不幸的是,它會(huì)凍結(jié)應(yīng)用程序,直到下載 JSON 文件。在谷歌上搜索,發(fā)現(xiàn) AsyncTask 可以解決這個(gè)問(wèn)題。我剛剛開始進(jìn)行android應(yīng)用程序開發(fā)。我試過(guò)但失敗了。你們能幫我把這個(gè)功能實(shí)現(xiàn)到 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(); }
為 AsyncTask 實(shí)現(xiàn)一個(gè)常規(guī)的 JSON 解析器函數(shù)
明月笑刀無(wú)情
2021-06-28 09:47:53