Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法应用JSON数组请求错误侦听器_Java_Android_Json_Api_Android Volley - Fatal编程技术网

Java 无法应用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

我是Android编程的新手,我曾经使用Google Volley库调用API,现在我的Android代码出现了一些问题。出现JSON错误

这是我的代码:

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的参数我已经给你截图了,请检查