出于某种原因,Api以不同的坐标设置回应我发送的坐标。我调试了应用程序,调用api的结果与JSON文件中返回的结果不同。例如 那些发送:
返回
{" COORD" {" LON":24.76" LAT":60.15}"天气": ................. 这是我目前使用的代码:
private static final String OPEN_WEATHER_MAP_API = " http://api.openweathermap.org/data/2.5/weather?q=&#34 ;;
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());
答案 0 :(得分:1)
特别是对Android或此服务一无所知,但我只是抬起他们的API,因为我认为你的网址看起来很可疑,并发现了这个:
api.openweathermap.org/data/2.5/weather?lat=35&lon=139
请注意,您的示例和变量?q=
private static final String OPEN_WEATHER_MAP_API = "http://api.openweathermap.org/data/2.5/weather?q=";
之类的内容
当我删除q=
(并从他们的网站示例中添加演示API密钥)时,我们会得到一个工作网址,它返回指定纬度/经度的数据:
http://api.openweathermap.org/data/2.5/weather?lat=51.89689166666667&lon=-8.486315&appid=44db6a862fba0b067b1930da0d769e98