我注意到方法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的方法。
尝试一下
// 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);