android - 如何从 Android 中的网站 url 获取 Json 数组?

标签 android

我正在开发大学在线成绩检查 android 应用程序,以便当学生在文本框中输入他/她的注册号时,应该显示结果。我有大学网址,但我不知道如何以 json 格式提取该网址并将其调用到 android 请任何人帮助我如何从 android 中的 url 中提取数据。

最佳答案

调用 JSONLoadTask().execute(yourUrl);

public class JSONLoadTask extends AsyncTask<String, Void, JSONObject>{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    //your code
    }
    @Override
    protected JSONObject doInBackground(String... params) {
        JSONParser jParser = new JSONParser();
        JSONObject object = jParser.getJsonObject(params[0]);
         return object;
        }

      @Override
       protected void onPostExecute(JSONObject result) {
        super.onPostExecute(result);
       //get the values from result here
       }

    }

}

参加下面的类(class)

public class JSONParser {

        static InputStream is = null;
        static JSONObject jObj = null;
        static String json = "";

        public JSONParser() {
        }

        /**
         * This method is used to parse the Url by taking the url as parameter
         * 
         * @param url
         * @return
         */
        public Object getJsonObject(String url) {
            try {
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(url);

                HttpParams httpParams = new BasicHttpParams();
                HttpConnectionParams.setStaleCheckingEnabled(httpParams, false);
                HttpConnectionParams.setConnectionTimeout(httpParams, 15000);
                HttpConnectionParams.setSoTimeout(httpParams, 15000);
                httpGet.setParams(httpParams);
                HttpResponse httpResponse = httpClient.execute(httpGet);
                StatusLine statusLine = httpResponse.getStatusLine();
                if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                    HttpEntity httpEntity = httpResponse.getEntity();
                    json = EntityUtils.toString(httpEntity);
                    try {
                        jObj = new JSONObject(json);
                    } catch (JSONException e) {
                        Log.e("JSON Parser", "Error parsing data " + e.toString());
                    }
                    if (json.startsWith("[")) {
                        // We have a JSONArray
                        try {
                            jObj = new JSONObject();
                            jObj.put("data", new JSONArray(json));
                        } catch (JSONException e) {
                            Log.d("JSON Parser",
                                    "Error parsing JSONArray " + e.toString());
                        }
                        return jObj;
                    }
                    // return JSON String
                    return jObj;
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
                 return null;
            } catch (ClientProtocolException e) {
                e.printStackTrace();
               return null;

            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
            return null;
        }
    }

关于android - 如何从 Android 中的网站 url 获取 Json 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720777/

相关文章:

java - 当我想更改 imageView 时,intent.getData() 为 null

android - 阿尔卡特 OneTouch M Pop 5020D 的开发者选项?

java - 在 android 中暂停一个类并开始另一个类,反之亦然

android - View 重叠,约束布局?

android - 更改 LiveData 时 DataBinding 不会更新值

java - 坏或没有互联网连接检查器

android - ActivityManager.killBackgroundProcesses 不同于 "Force stop"

android - SurfaceTexture 大小,如何定义?

java - WAV 到 Speex 的转换需要很多时间

android - 相对布局 : difference between layout_alignBottom and layout_above