Cómo enviar el objeto json al servidor usando volley en andorid
Quiero enviar el JSONObject al servidor usando el método POST. He utilizado volley biblioteca para pasar la cadena de params su funcionamiento bien, pero si intento utilizar el objeto json su mostrando un error para llamar el objeto json aquí es mi código
private void makeJsonObjReq() { showProgressDialog(); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, Const.URL_LOGIN, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d(TAG, response.toString()); msgResponse.setText(response.toString()); hideProgressDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); hideProgressDialog(); } }) { /** * Passing some request headers * */ @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("un", "[email protected]"); params.put("p", "somepasswordhere"); return params; } }; // Adding request to request queue AppController.getInstance().addToRequestQueue(jsonObjReq,tag_json_obj); // Cancelling request // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_obj); }
Y mi servidor de formulario de error es:
[10031] BasicNetwork.performRequest: Unexpected response code 401
Cómo resolver este problema. Quiero añadir application/json;charset=utf-8
en la cabecera por favor revise mi código si es correcto o no. Por favor, dame una sugerencia para superar este problema
- Retrofit 2 (en Android) después de la implementación, ¿Dónde están mis elementos JSON?
- Retrofit 2: Obtener el cuerpo de JSON from Response
- Cómo obtener JSON Array dentro de JSON objeto?
- Código de respuesta inesperado 500 para el método POST
- ¿Cómo mostrar el estado de la barra de progreso por porcentaje mientras se suben los datos de json?
- ¿Cómo mostrar YouTubePlayerView en un ListView en Android?
- Convertir de JSONArray a String y volver de nuevo
- Cómo analizar la matriz json anidado en android utilizando volley biblioteca
Tercer parámetro en JsonObjectRequest es para pasar post parámetros en forma jsonobject. Y para la cabecera usted necesita enviar dos valores separados uno para el contenido-tipo uno para el charset.
RequestQueue queue = Volley.newRequestQueue(this); private void makeJsonObjReq() { showProgressDialog(); Map<String, String> postParam= new HashMap<String, String>(); postParam.put("un", "[email protected]"); postParam.put("p", "somepasswordhere"); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, Const.URL_LOGIN, new JSONObject(postParam), new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d(TAG, response.toString()); msgResponse.setText(response.toString()); hideProgressDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); hideProgressDialog(); } }) { /** * Passing some request headers * */ @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } }; jsonObjReq.setTag(TAG); // Adding request to request queue queue.add(jsonObjReq); // Cancelling request /* if (queue!= null) { queue.cancelAll(TAG); } */ }
- ¿Se necesita permiso para usar Intent para llamar al teléfono?
- El diseño xml definido en layout-land no aparece en la aplicación android