获取"解析数据时出错org.json.JSONException:"的字符0处的输入结束在reddit API上

时间:2016-12-11 17:08:06

标签: java android json reddit

您好我试图使用此端点www.reddit.com/reddits.json在Android上显示一些列表,我收到此错误,下面是我的代码。

我的主要活动类上有这个asynctask类:

private class AsyncListLoader extends AsyncTask<String, Integer, JSONObject>{

    private JSONParser jsonParser = new JSONParser();
    private static final String REDEEM_URL = "http://www.reddit.com/reddits.json";
    private HashMap<String, String> param = new HashMap<>();

    @Override
    protected JSONObject doInBackground(String... params) {
        JSONObject json = jsonParser.makeHttpRequest(REDEEM_URL, "GET", param);
        if (json != null) {
            Log.d("JSON result", json.toString());
            return json;
        }
        else {
            Log.d("JSON result", "is null");
        }
        return null;
    }

    @Override
    protected void onPostExecute(JSONObject s) {
        try {
            if(!s.has("kind")){
                Toast.makeText(MainActivity.this, "Something went wrong", Toast.LENGTH_LONG).show();
            }
            else {
                JSONObject list = s.getJSONObject("data");
                JSONArray childrens = list.getJSONArray("children");
                for(int i = 0; i < childrens.length(); i++){
                    JSONObject o = childrens.getJSONObject(i).getJSONObject("data");
                    Feed f = new Feed(o.getString("icon_img"),o.getString("banner_img"),o.getString("display_name"));
                    MainActivity.this.adapter.add(f);
                }
            }
        } catch (JSONException e){
            e.printStackTrace();
        }
    }
}
获取时

makehttpRequest:

if(method.equals("GET")){
        // request method is GET

        if (sbParams.length() != 0) {
            url += "?" + sbParams.toString();
        }

        try {
            urlObj = new URL(url);

            conn = (HttpURLConnection) urlObj.openConnection();

            conn.setDoOutput(false);

            conn.setRequestMethod("GET");

            conn.setRequestProperty("Accept-Charset", charset);

            conn.setConnectTimeout(15000);

            conn.connect();

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

    }

    try {
        //Receive the response from the server
        InputStream in = new BufferedInputStream(conn.getInputStream());
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        result = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            result.append(line);
        }

        Log.d("JSON Parser", "result: " + result.toString());

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

    conn.disconnect();

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(result.toString());
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON Object
    return jObj;

我在网上测试了另外一个json端点并且它们正在工作。我不知道为什么会这样。

编辑:

  • 没有使用参数,所以网址很好。
  • json是有效的,我在不同的网站上查看了这个。

0 个答案:

没有答案