【问题标题】:Android Error with a Json File - E/FetchWeatherTask﹕ Error带有 Json 文件的 Android 错误 - E/FetchWeatherTask:错误
【发布时间】:2015-04-25 16:49:09
【问题描述】:

我在尝试获取 json 文件时遇到错误。

json:

http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7

错误:

04-25 04:12:32.086    3875-3897/com.example.g250.dublinweather.app E/FetchWeatherTask﹕ Error

代码:

protected Void doInBackground(Void... params) {
        // These two need to be declared outside the try/catch
        // so that they can be closed in the finally block.
        HttpURLConnection urlConnection = null;
        BufferedReader reader = null;

        // Will contain the raw JSON response as a string.
        String forecastJsonStr = null;

        try {
            // Construct the URL for the OpenWeatherMap query
            // Possible parameters are avaiable at OWM's forecast API page, at
            // http://openweathermap.org/API#forecast
            URL url = new URL("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7");

            // Create the request to OpenWeatherMap, and open the connection
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.connect();

            // Read the input stream into a String
            InputStream inputStream = urlConnection.getInputStream();
            StringBuffer buffer = new StringBuffer();
            if (inputStream == null) {
                // Nothing to do.
                return null;
            }
            reader = new BufferedReader(new InputStreamReader(inputStream));

            String line;
            while ((line = reader.readLine()) != null) {
                // Since it's JSON, adding a newline isn't necessary (it won't affect parsing)
                // But it does make debugging a *lot* easier if you print out the completed
                // buffer for debugging.
                buffer.append(line + "\n");
            }

            if (buffer.length() == 0) {
                // Stream was empty.  No point in parsing.
                return null;
            }
            forecastJsonStr = buffer.toString();

            //Debugging
            Log.v(LOG_TAG, "Json String" + forecastJsonStr);

        } catch (IOException e) {
            Log.e(LOG_TAG, "Error ", e);
            // If the code didn't successfully get the weather data, there's no point in attemping
            // to parse it.
            return null;
        } finally {
            if (urlConnection != null) {
                urlConnection.disconnect();
            }
            if (reader != null) {
                try {
                    reader.close();
                } catch (final IOException e) {
                    Log.e(LOG_TAG, "Error closing stream", e);
                }
            }
        }
        return null;
    }
}

json 文件有问题,但我不知道如何修复它。谁能帮帮我?

谢谢!!

【问题讨论】:

  • 我也有这个问题。 json 显示在 webbrowser 中,但不显示在应用程序中。我的问题是服务器和管理员解决了这个问题。我的问题是我帐户中的enter link description here

标签: android android-json


【解决方案1】:

对你的 json 请求使用 volley 是很简单的(见这里volley)和这里Gson。为了包含它们,请将以下内容添加到您的 gradle 构建文件中

compile 'com.google.code.gson:gson:2.3'
compile 'com.mcxiaoke.volley:library:1.0.15'

这是通过 volley 发出 json 请求的代码示例。更简单

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, urlJson,
        (String)null, new Response.Listener<JSONObject>() {

  @Override
  public void onResponse(JSONObject response) {

    try {
      // Parsing json object response
      Gson gson = new Gson();
      // Do your stuff here to parse it in your model
     }catch (Exception e) {
        // log here your error 
     }
  }, new Response.ErrorListener() {

  @Override
  public void onErrorResponse(VolleyError error) {
    VolleyLog.d(LOGTAG, "Error: " + error.getMessage());
    Log.e(LOGTAG, "Error while executing getNetworkFeed");
  }
});

// Adding request to request queue
getInstance().addToRequestQueue(jsonObjReq);

}

【讨论】:

  • 好吧,我知道谁来使用它,但我真的很想解决这个问题并知道它发生了什么。无论如何,谢谢!
猜你喜欢
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多