我有这个url json链接。http:/api.aladhan.comtimingsByAddress06-06-2020?address=Jeddah,SaudiArabia&method=1。
我想从中获取一些字符串,我看到了一些教程,并尝试着去做,但它总是显示空屏幕,没有任何错误的logcat。
我不知道是代码的问题还是url的问题。
这是我的代码。
public class MainActivity extends Activity {
RequestQueue req;
TextView fajerText,aserText,maghrebText;
String fajer,aser,maghreb;
String url="http://api.aladhan.com/timingsByAddress/06-06-2020?address=Jeddah,SaudiArabia&method=8";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
req= Volley.newRequestQueue(this);
fajerText=(TextView) findViewById(R.id.tv_fajr);
aserText=(TextView) findViewById(R.id.tv_aser);
maghrebText=(TextView) findViewById(R.id.tv_maghreb);
sendjsonrequest();
}
public void sendjsonrequest(){
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
fajer = response.getString("code");
aser = response.getString("status");
maghreb = response.getString("data");
fajerText.setText(fajer);
aserText.setText(aser);
maghrebText.setText(maghreb);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
req.add(jsonObjectRequest);
}
"data": {
"timings": {
"Fajr": "04:15",
"Sunrise": "05:40",
"Dhuhr": "12:22",
"Asr": "15:40",
"Sunset": "19:04",
"Maghrib": "19:04",
"Isha": "20:29",
"Imsak": "04:05",
"Midnight": "00:22"
}
勿
maghreb = response.getString("data");
您的 data
是 JSONObject. 你应该使用 getJSONObject()
而不是 getString()
.
getJSONObject(String name)
. 如果存在JSONObject并且是JSONObject,则返回通过名称映射的值,否则将抛出。
做
JSONObject data = response.getJSONObject("data");
JSONObject timings = data.getJSONObject("timings");
String fair = timings.getString("Fajr");