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

OpenWeather API以意外结果响应

庄星汉
2023-03-14

由于某种原因,Api响应时设置了与我发送的坐标不同的坐标。我调试了应用程序,调用api的结果与在JSON文件中返回的结果不同。例如发送的:

  1. http://api.openweathermap.org/data/2.5/weather?q=lat=51.89689166666667&lon=-8.486315

那些返回的

>

  • {“COORD”:{“LON”:24.76,“LAT”:60.15},“Weather”:....................................................................................

    私有静态最终字符串OPEN_WEATHER_MAP_API=“http://api.openweathermap.org/data/2.5/weather?q=”;

       URL url = new URL(String.format(OPEN_WEATHER_MAP_API + "lat="+lat+"&"+"lon="+lon));
            HttpURLConnection connection =
                    (HttpURLConnection)url.openConnection();
    
            connection.addRequestProperty("x-api-key",
                    context.getString(R.string.open_weather_maps_app_id));
    
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream()));
    
            StringBuffer json = new StringBuffer(1024);
            String tmp="";
            while((tmp=reader.readLine())!=null)
                json.append(tmp).append("\n");
            reader.close();
    
            JSONObject data = new JSONObject(json.toString());
    
  • 共有1个答案

    姚飞昂
    2023-03-14

    我对android或这项服务一无所知,但我只是查阅了他们的API,因为我觉得你的URL看起来很可疑,结果发现:

    api.openweathermap.org/data/2.5/weather?lat=35&lon=139
    

    注意,不存在像示例中那样的?q=,而在变量私有静态最终字符串OPEN_WEATHER_MAP_API=“http://api.openweathermap.org/data/2.5/weather?q=”;

    当我删除q=(并从它们的网站示例中添加demo API键)时,我们得到一个工作URL,它返回指定lat/long的数据:
    http://API.openweathermap.org/data/2.5/weather?lat=51.8968916666667&lon=-8.486315&appid=44db6a862fba0b067b1930da0d769e98

     类似资料:
    • 问题内容: 给定一个变量,该变量包含巴黎时区的日期时间2000-01-01 00:01(冬季afaik中为UTC + 2): 我希望转换为UTC会导致日期时间为1999-12-31 22:01,但是却得到了: 我想念什么? 谢谢 问题答案: 不幸的是 ,在许多时区使用标准构造函数的参数“不起作用” 。 但是对于没有夏令时转换的时区来说是安全的,例如UTC: 您会注意到: “ LMT + 0:09:

    • 我有以下代码: 为什么它会打印Java流?

    • 我有以下代码,它将标记字符串以创建对象列表: 我预期的输出是 1#、#Jon#、#176 2#、#Jack#、#200 3#、#Jimmy#、#160 如果我把内部分界线更改为类似的东西,它会正常工作为什么会发生这种行为?

    • 在我看来,我的缓冲区包含关于最后一个数据包步骤(路由器->my home)的信息,这些信息解释了为什么TTL值是254以及为什么我用Traceroute找到了相同的两个IP: $>traceroute qwant.com traceroute to qwant.com(194.187.168.99),30跳最大,60字节数据包 172.17.0.1(172.17.0.1)0.026 ms 0.01

    • 问题内容: 我正在使用arange函数来定义for循环迭代并获得意外结果。 满足以下条件: 仍使用8.35的停止值,如下所示 产生以下 但是我希望我的射程结束于8.35!我知道我可以使用> 8.35和<8.4的止损值来获得我的结果,但是为什么它与众不同并且在我看来不一致? 编辑:我正在使用2.7版 问题答案: 也许这与浮点数的限制有关。由于机器的精度,不可能将所有可能的值完美地存储为浮点数。例如:

    • 问题内容: 我的XML看起来像这样- 我正在使用以下代码进行处理- 它输出为- 我的问题是为什么“孩子数量是”分别为5和3?我不应该分别期望2和1吗?因为第一个对象具有“ 和”,第二个对象仅具有“ ” 本质上,我的意图是处理“对象”的子级。 问题答案: 那是因为每个子节点之间有2 ()。 以下内容包括文本节点及其相应的值。 可以通过修改代码来验证: 输出: 其中,3 = 和1 = 。