Java 无法应用JSON数组请求错误侦听器
我是Android编程的新手,我曾经使用Google Volley库调用API,现在我的Android代码出现了一些问题。出现JSON错误 这是我的代码:Java 无法应用JSON数组请求错误侦听器,java,android,json,api,android-volley,Java,Android,Json,Api,Android Volley,我是Android编程的新手,我曾经使用Google Volley库调用API,现在我的Android代码出现了一些问题。出现JSON错误 这是我的代码: private void loadJson() { pd.setMessage("Mengambil Data"); pd.setCancelable(false); pd.show(); JsonArrayRequest reqData = new JsonArra
private void loadJson()
{
pd.setMessage("Mengambil Data");
pd.setCancelable(false);
pd.show();
JsonArrayRequest reqData = new JsonArrayRequest(Request.Method.POST, ServerAPI.URL_DATA,null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
pd.cancel();
Log.d("volley","response : " + response.toString());
for(int i = 0 ; i < response.length(); i++)
{
try {
JSONObject data = response.getJSONObject(i);
ModelData md = new ModelData();
md.setNpm(data.getString("npm"));
md.setNama(data.getString("nama"));
md.setProdi(data.getString("prodi"));
md.setFakultas(data.getString("fakultas"));
mItems.add(md);
} catch (JSONException e) {
e.printStackTrace();
}
}
mAdapter.notifyDataSetChanged();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
Log.d("volley", "error : " + error.getMessage());
}
});
AppController.getInstance().addToRequestQueue(reqData);
}
private void loadJson()
{
pd.setMessage(“Mengambil数据”);
pd.可设置可取消(假);
pd.show();
JsonArrayRequest reqData=新的JsonArrayRequest(Request.Method.POST,ServerAPI.URL\u DATA,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
pd.cancel();
Log.d(“截击”,“响应:+response.toString());
对于(int i=0;i
删除Request.Method.POST的第一个参数JsonArrayRequest
对象在构造函数中接受三个参数<代码>URL
,侦听器
,错误侦听器
JsonArrayRequest req = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
JsonArrayRequest req=新的JsonArrayRequest(url,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
似乎您向JsonArrayRequest()
传递了错误的参数。
根据找到的文档,方法签名是publicJSONArrayRequest(字符串url,Response.Listener,Response.ErrorListener ErrorListener)
,您正在传递(int,String,null,Response.Listener,Response.ErrorListener)
删除
Request.Method.POST
和null
,您就可以开始了。您在JSONArryRequest中传递了错误的参数,您需要传递URL(字符串)和响应侦听器
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST,"http://example.com/feed.json",
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray jsonArray) {
//Your code
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this, "Unable to fetch data: " + volleyError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
JsonArrayRequest=newjsonarrayrequest(request.Method.POST,”http://example.com/feed.json",
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray JSONArray){
//你的代码
}
},
新的Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
Toast.makeText(MainActivity.this,“无法获取数据:”+volleyError.getMessage(),Toast.LENGTH_SHORT.show();
}
});
JsonArrayRequest中的参数错误(必须为URL传递字符串)。
试着这样做:
private void loadJson()
{
pd.setMessage("Mengambil Data");
pd.setCancelable(false);
pd.show();
JsonArrayRequest reqData = new JsonArrayRequest(ServerAPI.URL_DATA,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
pd.cancel();
Log.d("volley","response : " + response.toString());
for(int i = 0 ; i < response.length(); i++)
{
try {
JSONObject data = response.getJSONObject(i);
ModelData md = new ModelData();
md.setNpm(data.getString("npm"));
md.setNama(data.getString("nama"));
md.setProdi(data.getString("prodi"));
md.setFakultas(data.getString("fakultas"));
mItems.add(md);
} catch (JSONException e) {
e.printStackTrace();
}
}
mAdapter.notifyDataSetChanged();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
Log.d("volley", "error : " + error.getMessage());
}
});
AppController.getInstance().addToRequestQueue(reqData);
}
private void loadJson()
{
pd.setMessage(“Mengambil数据”);
pd.可设置可取消(假);
pd.show();
JsonArrayRequest reqData=新的JsonArrayRequest(ServerAPI.URL\u数据,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
pd.cancel();
Log.d(“截击”,“响应:+response.toString());
对于(int i=0;i
check URL\u数据值存在正确的URL&Response保存JSON值。请分享您在JSONArrayRequest中传递数据的截图,因为我在截图中看到,您似乎只传递了三个参数。JSONArrayRequest的某些参数不匹配。检查你给新的JsonArrayRequest(……)KulsDroid的参数我已经给你截图了,请检查