Java 为测试目的将JSON对象响应传递给TextView时出错

Java 为测试目的将JSON对象响应传递给TextView时出错,java,php,android,postman,jsonobjectrequest,Java,Php,Android,Postman,Jsonobjectrequest,我看到了其他的帖子,但是没有用,我仍然有错误,为什么我一直有这个错误。我一直在尝试将JSONObject响应传递给TextView,以检查它是否真的包含对象,然后再尝试将其传递给一些表。从错误来看,分支没有任何价值?为什么?我认为我的JSON Obj与我的postman结果相匹配 这是我的错误: 2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err: org.json.JSONException: No

我看到了其他的帖子,但是没有用,我仍然有错误,为什么我一直有这个错误。我一直在尝试将JSONObject响应传递给TextView,以检查它是否真的包含对象,然后再尝试将其传递给一些表。从错误来看,分支没有任何价值?为什么?我认为我的JSON Obj与我的postman结果相匹配

这是我的错误:

2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err: org.json.JSONException: No value for Branches
2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err:     at org.json.JSONObject.get(JSONObject.java:399)
2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err:     at org.json.JSONObject.getJSONArray(JSONObject.java:594)
2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err:     at com.example.sample1myapp.main.Functions.dash_branch.branch$1.onResponse(branch.java:100)
2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err:     at com.example.sample1myapp.main.Functions.dash_branch.branch$1.onResponse(branch.java:96)
2019-11-10 09:21:51.577 14371-14371/com.example.sample1myapp W/System.err:     at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:90)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at android.os.Handler.handleCallback(Handler.java:883)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:100)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at android.os.Looper.loop(Looper.java:214)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7356)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2019-11-10 09:21:51.578 14371-14371/com.example.sample1myapp E/response: {"error":true,"message":"Error Occured 102"}
此问题的主要代码:

public class branch extends AppCompatActivity {

    //getting the current sysID use in protected params
    private static final String KEY_SYS_ID = "sys_id";
    private int sys_Id = SharedPrefManager.getInstance(this).getUserid();

    //View Branch
    private static final String KEY_VB_ID = "branchid";
    private static final String KEY_VB_USER = "username";
    private static final String KEY_VB_PASSWORD = "password";
    private static final String KEY_VB_NAME = "branchname";
    private static final String KEY_VB_SYSID = "sys_id";
    private static final String KEY_VB_CREATED = "created";
    private static final String KEY_VB_UT = "user_type";

    private String url = "http://192.168.1.2/sample1/v1/viewBranches.php";

    private TextView testdata;
    private NestedScrollView nestedScrollView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_branch);
        if (!SharedPrefManager.getInstance(this).isLoggedIn()) {
            finish();
            startActivity(new Intent(this, login.class));
            return;
        }

        testdata = findViewById(R.id.testdatatv);
        nestedScrollView = findViewById(R.id.nested);

    }

    public void retrieve() {
         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("Branches");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject branch = jsonArray.getJSONObject(i);

                                int viewBranchID = branch.getInt(KEY_VB_ID);
                                String viewBranchUser = branch.getString(KEY_VB_USER);
                                String viewBranchPassword = branch.getString(KEY_VB_PASSWORD);
                                String viewBranchName = branch.getString(KEY_VB_NAME);
                                int viewBranchSYSID = branch.getInt(KEY_VB_SYSID);
                                int viewBranchCreated = branch.getInt(KEY_VB_CREATED);
                                String viewBranchUT = branch.getString(KEY_VB_UT);

                                testdata.append(
                                        String.valueOf(viewBranchID)+""+
                                                viewBranchUser+""+
                                                viewBranchPassword+""+
                                                viewBranchName+""+
                                                String.valueOf(viewBranchSYSID)+""+
                                                String.valueOf(viewBranchCreated)+""+
                                                viewBranchUT+"\n\n");
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                            Log.e("response", "" + response);
                        }
                    }

                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("response", "" + error);

            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put(KEY_SYS_ID, String.valueOf(sys_Id));
                return params;
            }

        };
        RequestHandler.getInstance(this).addToRequestQueue(jsonObjectRequest);
    }

    /**
     * Show populated Table
     */
    public void onTableshow(View view){
        //tableView = (TableView<String[]>) findViewById(R.id.tableView);
        //new bTSQLClient(branch.this).retrieve(tableView);
        retrieve();
    }

}
邮递员输出

{
    "Branches": [
        {
            "branchid": 12,
            "username": "king",
            "password": "202cb962ac59075b964b07152d234b70",
            "branchname": "123branch",
            "sys_id": 8,
            "created": "2019-10-28 20:45:08",
            "user_type": "Branch"
        },
        {
            "branchid": 13,
            "username": "makoy",
            "password": "bda639c314e39023789c37d7a07469f9",
            "branchname": "makoy",
            "sys_id": 8,
            "created": "2019-10-28 20:50:41",
            "user_type": "Branch"
        },
        {
            "branchid": 14,
            "username": "foodbranch",
            "password": "202cb962ac59075b964b07152d234b70",
            "branchname": "foodbranch",
            "sys_id": 8,
            "created": "2019-10-28 22:01:59",
            "user_type": "Branch"
        },
        {
            "branchid": 15,
            "username": "081nao397",
            "password": "7815696ecbf1c96e6894b779456d330e",
            "branchname": "testingbranchname",
            "sys_id": 8,
            "created": "2019-11-08 08:21:01",
            "user_type": "Branch"
        },
        {
            "branchid": 16,
            "username": "testing101",
            "password": "7815696ecbf1c96e6894b779456d330e",
            "branchname": "rest",
            "sys_id": 8,
            "created": "2019-11-08 08:28:55",
            "user_type": "Branch"
        }
    ]
}
我是对的,对吗?我有一个JSON对象,在JSON对象内部有一个数组,它是
分支
,有5个对象用逗号分隔?这意味着我正在执行JSON对象请求,对吗

这是发送请求的邮递员屏幕


更新

我认为您可能会选择
StringRequest
而不是
JsonObjectRequest
,如下所示

StringRequest jsonObjReq = new StringRequest(Request.Method.POST, url,
        new com.android.volley.Response.Listener<String>() {

            @Override
            public void onResponse(String response) {

                try {
                    JSONObject jsonObject = new JSONObject(response.toString());

                    // Parse your JSON data here. 

                } catch (JSONException e) {

                }
            }
        }, new com.android.volley.Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
        System.out.println("error:: " + error.toString());
    }
})

{
    @Override
    public String getBodyContentType() {
        return "application/x-www-form-urlencoded; charset=UTF-8";
    }

    @Override
    protected Map<String, String> getParams() {
        Map<String, String> params = new HashMap<String, String>();
        params.put(KEY_SYS_ID, String.valueOf(sys_Id));
        return params;
    }
};

更新

我认为您可能会选择
StringRequest
而不是
JsonObjectRequest
,如下所示

StringRequest jsonObjReq = new StringRequest(Request.Method.POST, url,
        new com.android.volley.Response.Listener<String>() {

            @Override
            public void onResponse(String response) {

                try {
                    JSONObject jsonObject = new JSONObject(response.toString());

                    // Parse your JSON data here. 

                } catch (JSONException e) {

                }
            }
        }, new com.android.volley.Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
        System.out.println("error:: " + error.toString());
    }
})

{
    @Override
    public String getBodyContentType() {
        return "application/x-www-form-urlencoded; charset=UTF-8";
    }

    @Override
    protected Map<String, String> getParams() {
        Map<String, String> params = new HashMap<String, String>();
        params.put(KEY_SYS_ID, String.valueOf(sys_Id));
        return params;
    }
};


我找不到关于JSON解析器的任何错误。你确定你发布的JSON字符串是从php后端得到的吗?是的,我想是的,sirah,现在错误变了,我想在我发布这段代码之前,我不小心把这个方法放在了java上,然后我把它转回到了POST,以匹配我的php,出现了这个新错误!il更新错误代码看起来您得到的响应如下-
{“error”:true,“message”:“error occurrend 102”}
。您没有此处的
分支
信息,因此会出现错误。请检查您是否正确地将参数传递给POST请求,服务器端是否根据有效的请求返回适当的数据。是的,但是我检查了postman并使用了带有sys_id参数的POST,它得到了正确的结果,这就是我在上面发布的postman结果。我找不到关于JSON的任何错误解析器。你确定你发布的JSON字符串是从php后端得到的吗?是的,我想是的,sirah,现在错误变了,我想在我发布这段代码之前,我不小心把这个方法放在了java上,然后我把它转回到了POST,以匹配我的php,出现了这个新错误!il更新错误代码看起来您得到的响应如下-
{“error”:true,“message”:“error occurrend 102”}
。您没有此处的
分支
信息,因此会出现错误。请检查您是否正确地将参数传递给POST请求,服务器端是否根据有效的请求返回适当的数据。是的,但是我检查了postman并使用了带有sys_id参数的POST,它得到了正确的结果,这就是我在上面发布的postman结果我的getParams sir是否正确?使用getParams,我可以从SharedReferences发送当前的sys_id,并将其发送到php代码,以获取与该sys_id相关的所有内容?我认为您是对的。您正在以
字符串
的形式传递参数,该参数应以
整数
的形式传递。我已经更新了我的答案。请看一看。先生,非常感谢您的帮助!但是我仍然得到同样的错误sir你的URL是什么?等等,先生,我会添加我的常量类,这样你就可以看到我的URL,但是我确定我传递的是正确的URL sir是我的getParams sir是正确的?使用getParams,我可以从SharedReferences发送当前的sys_id,并将其发送到php代码,以获取与该sys_id相关的所有内容?我认为您是对的。您正在以
字符串
的形式传递参数,该参数应以
整数
的形式传递。我已经更新了我的答案。请看一看。先生,非常感谢您的帮助!但是我仍然得到同样的错误,先生,你的URL是什么?等等,先生,我会添加我的常量类,这样你就可以看到我的URL,但是我确信我传递的是正确的URL,先生
{
    "Branches": [
        {
            "branchid": 12,
            "username": "king",
            "password": "202cb962ac59075b964b07152d234b70",
            "branchname": "123branch",
            "sys_id": 8,
            "created": "2019-10-28 20:45:08",
            "user_type": "Branch"
        },
        {
            "branchid": 13,
            "username": "makoy",
            "password": "bda639c314e39023789c37d7a07469f9",
            "branchname": "makoy",
            "sys_id": 8,
            "created": "2019-10-28 20:50:41",
            "user_type": "Branch"
        },
        {
            "branchid": 14,
            "username": "foodbranch",
            "password": "202cb962ac59075b964b07152d234b70",
            "branchname": "foodbranch",
            "sys_id": 8,
            "created": "2019-10-28 22:01:59",
            "user_type": "Branch"
        },
        {
            "branchid": 15,
            "username": "081nao397",
            "password": "7815696ecbf1c96e6894b779456d330e",
            "branchname": "testingbranchname",
            "sys_id": 8,
            "created": "2019-11-08 08:21:01",
            "user_type": "Branch"
        },
        {
            "branchid": 16,
            "username": "testing101",
            "password": "7815696ecbf1c96e6894b779456d330e",
            "branchname": "rest",
            "sys_id": 8,
            "created": "2019-11-08 08:28:55",
            "user_type": "Branch"
        }
    ]
}
StringRequest jsonObjReq = new StringRequest(Request.Method.POST, url,
        new com.android.volley.Response.Listener<String>() {

            @Override
            public void onResponse(String response) {

                try {
                    JSONObject jsonObject = new JSONObject(response.toString());

                    // Parse your JSON data here. 

                } catch (JSONException e) {

                }
            }
        }, new com.android.volley.Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
        System.out.println("error:: " + error.toString());
    }
})

{
    @Override
    public String getBodyContentType() {
        return "application/x-www-form-urlencoded; charset=UTF-8";
    }

    @Override
    protected Map<String, String> getParams() {
        Map<String, String> params = new HashMap<String, String>();
        params.put(KEY_SYS_ID, String.valueOf(sys_Id));
        return params;
    }
};
public void retrieve() {

     JSONObject param = new JSONObject();

     try {
        param.put("sys_id", sys_Id);
     } catch (JSONException e) {
        e.printStackTrace();
     }

     // Pass the param while creating the request
     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
            Constants.viewbranches_url, param,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray jsonArray = response.getJSONArray("Branches");
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject branch = jsonArray.getJSONObject(i);

                            int viewBranchID = branch.getInt(KEY_VB_ID);
                            String viewBranchUser = branch.getString(KEY_VB_USER);
                            String viewBranchPassword = branch.getString(KEY_VB_PASSWORD);
                            String viewBranchName = branch.getString(KEY_VB_NAME);
                            int viewBranchSYSID = branch.getInt(KEY_VB_SYSID);
                            int viewBranchCreated = branch.getInt(KEY_VB_CREATED);
                            String viewBranchUT = branch.getString(KEY_VB_UT);

                            testdata.append(
                                    String.valueOf(viewBranchID)+""+
                                            viewBranchUser+""+
                                            viewBranchPassword+""+
                                            viewBranchName+""+
                                            String.valueOf(viewBranchSYSID)+""+
                                            String.valueOf(viewBranchCreated)+""+
                                            viewBranchUT+"\n\n");
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        Log.e("response", "" + response);
                    }
                }

            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("response", "" + error);

        }
    }) {

        // Set the content type here
        @Override
        public String getBodyContentType() {
            return "application/x-www-form-urlencoded; charset=UTF-8";
        }

    };
    RequestHandler.getInstance(this).addToRequestQueue(jsonObjectRequest);
}