如何在Volley中使用JsonObjectRequest放置参数?

问题描述 投票:0回答:1

我注意到方法POST在JsonObjectRequest中不起作用。我必须要传递的参数是

session_code: 12345
user_id: 55
JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, WebConfig.news, null,

我如何在其中输入两个参数?

我想将此转换为jsonObjectRequest,但我不知道该怎么做。

        @Override
            protected Map < String, String > getParams() throws AuthFailureError {


                // get user data from session
                HashMap<String, String> user = session.getUserDetails();

                // user session
                String user_session = user.get(session.KEY_SESSION);


                Map < String, String > params = new HashMap < > ();
                params.put("session_code", user_session);
                params.put("mode", "employee");
                return params;
            }
here is my full code
MainActivity
  public void loadNews(){


        final Constant WebConfig = new Constant();
        RequestQueue queue = Volley.newRequestQueue(getContext());



        // get user data from session
        HashMap<String, String> user = session.getUserDetails();

        // user session
        String user_session = user.get(session.KEY_SESSION);


        Map < String, String > params = new HashMap < > ();
        params.put("session_code", user_session);
        params.put("mode", "employee");

        JSONObject parameters = new JSONObject(params);

        //Call our volley library
        JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, WebConfig.news, parameters, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response)
                    {

                        try {

                            JSONArray details = response.getJSONArray("data");


                                Log.d("newsrepose",String.valueOf(response));

                                newsList.clear();

                                for (int i=0; i<details.length(); i++) {

                                    JSONObject object = details.getJSONObject(i);

                                    newsList.add(new NewsModel(
                                            object.getInt("a"),
                                            object.getString("b"),
                                            object.getString("c"),
                                            object.getString("d"),
                                            object.getString("e"),
                                            object.getString("f"),
                                            object.getString("g"),
                                            object.getString("h")
                                    ));

                                }

                                //creating adapter object and setting it to recyclerview
                                adapter = new NewsAdapter(getActivity(), newsList);
                                newsRecyclerView.setAdapter(adapter);

                                adapter.notifyDataSetChanged();
                                swipeRefreshLayout.setRefreshing(false);


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


            //This is for Headers If You Needed
            @Override
            public Map< String, String > getHeaders() throws AuthFailureError {
                Map < String, String > params = new HashMap< String, String >();
                params.put("Content-Type", "application/x-www-form-urlencoded");
                params.put("X-API-KEY",WebConfig.test);
                params.put("Authorization",WebConfig.test1);
                return params;
            }

            @Override
            protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {

                try {
                    Cache.Entry cacheEntry = HttpHeaderParser.parseCacheHeaders(response);
                    if (cacheEntry == null) {
                        cacheEntry = new Cache.Entry();
                    }
                    final long cacheHitButRefreshed = 3 * 60 * 1000; // in 3 minutes cache will be hit, but also refreshed on background
                    final long cacheExpired = 24 * 60 * 60 * 1000; // in 24 hours this cache entry expires completely
                    long now = System.currentTimeMillis();
                    final long softExpire = now + cacheHitButRefreshed;
                    final long ttl = now + cacheExpired;
                    cacheEntry.data = response.data;
                    cacheEntry.softTtl = softExpire;
                    cacheEntry.ttl = ttl;
                    String headerValue;
                    headerValue = response.headers.get("Date");
                    if (headerValue != null) {
                        cacheEntry.serverDate = HttpHeaderParser.parseDateAsEpoch(headerValue);
                    }
                    headerValue = response.headers.get("Last-Modified");
                    if (headerValue != null) {
                        cacheEntry.lastModified = HttpHeaderParser.parseDateAsEpoch(headerValue);
                    }
                    cacheEntry.responseHeaders = response.headers;
                    final String jsonString = new String(response.data,
                            HttpHeaderParser.parseCharset(response.headers));
                    return Response.success(new JSONObject(jsonString), cacheEntry);
                } catch (UnsupportedEncodingException e) {
                    return Response.error(new ParseError(e));
                } catch (JSONException e) {
                    return Response.error(new ParseError(e));
                }
            }

            @Override
            protected void deliverResponse(JSONObject response) {
                super.deliverResponse(response);
            }

            @Override
            public void deliverError(VolleyError error) {
                super.deliverError(error);
            }

            @Override
            protected VolleyError parseNetworkError(VolleyError volleyError) {
                return super.parseNetworkError(volleyError);
            }
        };

        Volley.newRequestQueue(getContext()).add(stringRequest);
    }

我认为问题是通过使用jsonObjectRequest,我仍然不知道如何解决此问题。

是否有使用JsonObjectRequest的方法。

android android-volley
1个回答
0
投票

尝试一下

 // get user data from session
 HashMap<String, String> user = session.getUserDetails();

 // user session
 String user_session = user.get(session.KEY_SESSION);


 Map < String, String > params = new HashMap < > ();
 params.put("session_code", user_session);
 params.put("mode", "employee");

JSONObject parameters = new JSONObject(params);

JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, WebConfig.news, parameters, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        //TODO: handle success
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
        //TODO: handle failure
    }
});

Volley.newRequestQueue(this).add(jsonRequest);
© www.soinside.com 2019 - 2024. All rights reserved.