2017-07-11 30 views
1

我是新来的android工作室,我试图让我的简单应用获取来自URL的JSON数据,即从服务器使用Android Studio中的Volley获取JSON数据。当我调试我的设备上,它工作正常,但不显示任何数据,我相信有什么不对我的应用没有显示来自URL的JSON数据

我的代码:

package imo.meteoiraq; 

import android.app.DownloadManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

public class MainActivity extends AppCompatActivity { 
RequestQueue rq; 
TextView nameText,descriptionText,fbUrlText,youtubeUrlTxt; 
    int humidity; 
    int wind_speed; 
    int temperature; 
    String url="/stationlookupstation=I1410&units=metric&v=2.0&format=json"; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     rq= Volley.newRequestQueue(this); 

     nameText= (TextView) findViewById(R.id.tempText); 
     descriptionText = (TextView) findViewById(R.id.wind_speed); 
     fbUrlText = (TextView) findViewById(R.id.humidity); 
     sendjsonrequest(); 
    } 
public void sendjsonrequest(){ 
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      try { 
       temperature = response.getInt("temperature"); 
       wind_speed= response.getInt("wind_speed"); 
       humidity= response.getInt("type"); 

       nameText.setText(temperature); 
       descriptionText.setText(humidity); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 
    rq.add(jsonObjectRequest); 
} 
} 

我的数据JSON:

{ 
    "stations": { 
    "I1410": { 
     "updated": 1499668936, 
     "ageh": 0, 
     "agem": 0, 
     "ages": 58, 
     "type": "PWS", 
     "wind_dir_degrees": 315, 
     "wind_speed": 6.1, 
     "wind_gust_speed": 11.1, 
     "humidity": 10, 
     "temperature": 40.5, 
     "precip_rate": null, 
     "precip_today": 0, 
     "pressure": 1002.26, 
     "dewpoint": null, 
     "windchill": null 
    } 
    } 
} 
+0

'错了什么'你必须找出究竟是什么。 logcat中是否有异常堆栈跟踪?它可能会在'} catch中打印一些东西(JSONException e){e.printStackTrace();}} }' –

回答

2

首先得到JsonObject站和I1410,然后使用age = I1410JO.getInt(“ages”);

JSONObject stationsJO = response.getJSONObject("stations"); 
JSONObject I1410JO = stationsJO.getJSONObject("I1410"); 
int ages = I1410JO.getInt("ages"); 
+0

APP停止工作 – aligassan

+0

show stacktrace –

+0

你的意思是android moniter? – aligassan

0

您的Url中存在错误,并且您没有正确解析响应。使用适当的(GET或POST)方法发送正确的Url。

1

该程序有2个问题。

第一个问题已经由Rasoul Miri解释了关于访问站的JJ JSON对象,然后是I1410JO JSON对象。

第二个问题是,温度不是整数格式,但双格式,所以你需要使用I1410JO.getDouble(“温度”)来得到它。

相关问题