当前位置: 首页 > 知识库问答 >
问题:

使用HttpUrlConnection可以获得多少数据

柴瀚昂
2023-03-14

我正在学习谷歌在udacity制作的android课程中的例子,我用另一个例子替换了这个例子的url,但是我只能看到,使用日志只能看到我正在下载的url的一小部分。

public class FetchWeatherTask extends AsyncTask<Void, Void, Void> {
    private  final String LOG_TAG = FetchWeatherTask.class.getSimpleName();
    @Override
    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 available 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();
            Log.v(LOG_TAG, "Forecast 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;
    }
}

您可以下载的数据量有限制吗?

我在日志中的回复:

V/FetchWeatherTask︰预测JSON字符串:{"cod":"200","消息": 0.0506,"城市":{"id": 0,"name":"Mountain View","Country":"US","coord":{"lat": 37.4056,"lon":-122.0775}},"cnt": 7,"list":[{"dt": 1427572800,"temp":{"day": 22.34,"min": 6.06,"max": 22.41,"night": 6.06,"Eve": 16.73,"morn": 9.62},"压力": 995.73,"湿度": 49,"天气":[{"id": 500,"main":"Rain","描述":"小雨","图标":"10d"}],"速度": 1.95,"deg": 339,"云": 32},{"“压力”:993.22,“湿度”:46,“天气”:[{“id”:800,“main”:“Clear”,“description”:“sky is Clear”,“icon”:“01d”}],“速度”:1.33,“deg”:297,“云”:0},{“dt”:1427745600,“temp”:{“day”:16.45,“min”:8.95,“max”:17.99,“night”:11.51,“Eve”:17.99,“morn”:8.95},“压力”:1011.5,“湿度”:0,“天气”:[{“id”:500,“main”:“Rain”,“描述”:“小雨”,“图标”:“10d”}],“速度”:2.24,“deg”:292,“云”:51},{“dt”:1427832000,“temp”:{“day”:14.62,“":[{"id": 500,"main":"Rain","描述":"小雨","图标":"10d"}],"速度": 4.02,"deg": 324,"云": 0},{"dt": 1427918400,"temp":{"day": 15.37,"min": 9.92,"max": 17.5,"night": 14.15,"Eve": 17.5,"morn": 9.92},"压力": 1012.74,"湿度": 0,"天气":[{"id": 800,"main":"Clear","description":"sky is清除","图标":"01d"}],"速度": 3.46,"deg": 312,"云": 5},{"dt": 1428004800,"temp":{"day": 14.2,"min": 10.92,"max": 16.56,"night"“清除”、“描述”:“天空晴朗”、“图标”:“01d”}]、“速度”: 6.67、“deg”: 330、“云”: 0}、{“dt”: 1428091200、“温度”:{“日”: 16.39、“分钟”: 10.38、“最大值”: 17.89、“夜”: 11.01、“前夕”: 17.89、“晨”: 10.38}、“压力”: 1014.68、“湿度”: 0、“天气”:[{“id”: 800、“main”:“清除”、“描述”:“天空晴朗”、“图标”:“01d”}]、“速度”: 3.81、“deg”: 338、“云”: 0}]}

共有1个答案

施季
2023-03-14

当然有一个限制,对于较大的日志,如json响应,总是尝试分割响应(json响应是对象的集合,如项目数组,尝试将响应转换为jason数组并逐个获取)并打印多个日志函数,而不是尝试在单个日志函数中打印整个响应。

 类似资料:
  • 问题内容: 我一直在忙于一些AJAX代码。我想计算已加载了多少数据,并想用百分比显示它。 我所有的预加载信息都在“反馈”中。我可以计算它包含多少数据(以字节为单位),也可以查看进度吗?就像加载时一样:10kb,20kb,30kb等 我的代码: 对不起,我英语不好。 问题答案: 这 是 可能的。XHRs有一个事件。唯一的问题是访问XHR对象- 不幸的是仅接收该对象,而不接收基础XHR对象。也不能作为

  • 问题内容: 假设我有一个数组数组 我想将其解析为对象。当我用 它似乎不起作用,我通过使用进行了工作 有一个更好的方法吗? 问题答案: 是的,请使用。 将允许你指定你真正想要的泛型类型,这有助于GSON找到类型来使用反序列化过程。 它使用这种宝石:。它是匿名类的事实使它成为的子类。相当于一个类 该方法的规范指出 如果超类是参数化类型,则返回的对象必须准确反映源代码中使用的实际类型参数。 如果指定 返

  • 问题内容: 最多可以在Java的java.util.List中添加多少数据? ArrayList是否有默认大小? 问题答案: 这取决于实现方式。由于您使用s 为数组建立索引,因此an 不能容纳多个元素。不过,A 并不受相同方式的限制,并且可以包含任意数量的元素。

  • 问题内容: 是否可以有两个背景图像?例如,我想在顶部重复一幅图像(repeat-x),在整个页面中重复另一幅图像(repeat),其中整个页面中的一幅图像位于顶部重复的一幅图像的后面。 我发现通过设置html和body的背景,可以为两个背景图像实现所需的效果: 这是“好” CSS吗?有没有更好的方法?如果我要三个或更多背景图像怎么办? 问题答案: CSS3允许这种事情,它看起来像这样: 现在,所有

  • 问题内容: 所以我正在使用node.js和socket.io。我有这个小程序,它接受文本框的内容并将其发送到node.js服务器。然后,服务器将其中继回其他连接的客户端。有点像聊天服务,但不完全是。 无论如何,如果用户键入价值2-10k的文本并尝试发送该文本,该怎么办?我知道我可以自己尝试一下,但是我正在寻找一个实用的最佳实践限制,即我可以通过一次发射处理多少数据。 问题答案: Node和sock

  • 本文向大家介绍我可以在JavaScript cookie中存储多少数据?,包括了我可以在JavaScript cookie中存储多少数据?的使用技巧和注意事项,需要的朋友参考一下 以下是您可以存储在JavaScript cookie中的日期的详细信息- 网页浏览器 最大Cookie 每个Cookie的最大大小 谷歌浏览器 180 4096字节 火狐浏览器 150 4097字节 歌剧 180 409