2017-05-08 44 views
0

我使用我想从API获取特定天气一部分,我下面的代码,所以我使用JSON我无法JSObject转换API密钥


这里下面链接的https://openweathermap.org/current
的API在这里我想天气部分类型的
http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1

值null org.json.JSONObject $ 1位API密钥无法被转换为JSONObject的


我使用的AsyncTask

我的MainActivity在这里

公共类MainActivity扩展AppCompatActivity {

String data ; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    DownloadWeatherData downloadWeatherData = new DownloadWeatherData(); 

    try { 

     downloadWeatherData.execute("http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1").get(); 


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

}

这是我的java文件

公共类DownloadWeatherData扩展AsyncTask {

String weatherdata; 
@Override 
protected String doInBackground(String... urls) 
{ 
    try { 
     URL url = new URL(urls[0]); 

     HttpURLConnection connection =(HttpURLConnection) url.openConnection(); 
     connection.connect(); 

     InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream()); 

     int data = inputStreamReader.read(); 

     while(data!=-1) 
     { 
      char str = (char)data; 
      weatherdata+=str; 

      data = inputStreamReader.read(); 
     } 

     return weatherdata; 

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

    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
    return null; 
} 

@Override 
protected void onPostExecute(String s) 
{ 
    super.onPostExecute(s); 


    try { 
     JSONObject jsonObject = new JSONObject(s); 
     String info = jsonObject.getString("weather"); 
     Log.d("weatherpart",info); 

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

    } 
} 

}

+0

我认为改造是HttpURLConnection的替代 –

回答

0

你做错了。 天气是一个数组而不是json对象。像这样做:

JSONObject jsonObj = new JSONObject(s); 

JSONArray ja_data = jsonObj.getJSONArray("weather"); 
int length = ja_data.length(); 
for(int i=0; i<length; i++) { 
    JSONObject jsonObj = ja_data.getJSONObject(i); 
    . 
    . 
    . 
} 
+0

我不得不删除try和catch块甚至还有同样的错误如上显示 –