Código de respuesta inesperado 500 para el método POST
Estoy haciendo una actualización sobre el proyecto antiguo y no tengo mucho conocimiento de Android desde ahora. En el proyecto tenemos la sección de comentarios sobre el producto.
Para el comentario después de enviar más temprano teníamos vuelta como 0 (un cierto error) y 1 (éxito).
- Jackson JsonParseException: Byte medio de UTF-8 no válido
- Creación de un WebService ASP.net que devuelve JSON en lugar de XML
- Android Parse JSON atascado en obtener tarea
- Volley Android Cómo enviar solicitud con los encabezados de autenticación y el objeto Json en el cuerpo
- Parse Dynamic Key Json String utilizando Retrofit
Debajo está el código que estábamos usando.
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Method.POST, act.getString(R.string.CommentForUserURL), null, new Response.Listener<JSONObject>() { @Override public void onResponse( JSONObject response) { Log.d("response done", "done===" + response); mloading.setVisibility(View.GONE); if (response != null) { Comment obj = new Comment(); JSONObject jsonObject = response; try { obj.setComment(jsonObject .getString("Comment"));
Ahora hemos cambiado el objeto de retorno de 0/1 a objeto de usuario.
¿Necesita esta necesidad de actualizar JsonObjectRequest a petición de GJSON? ¿O el objeto también será analizado con JsonObjectRequest?
Estoy pidiendo porque cuando ejecuto arriba, obtengo el error como abajo.
01-25 12:30:21.754: E/Volley(16487): [10114] BasicNetwork.performRequest: Unexpected response code 500 for http://new.souqalharim.com/add/CommentForMerchant
¿Alguna idea de por qué estoy recibiendo este error?
Nota: Esta URL funciona correctamente para la aplicación de iPhone.
Editar 1
Éste es método del poste, así que la URL completa no está allí. Hay pocos más parámetros para agregar como? Comment = MyComment & userId = 123 & productId = 234. Como se post no estoy añadiendo parámetros en url real.
Tengo los de otros métodos
@Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<String, String>(); params.put("productId", productId.toString()); params.put("userId", mSessionManager.getUserCode().toString()); params.put("comment", GlobalFunctions .EncodeParameter(med_comments .getText().toString())); return params; }
URL completa es la siguiente.
Http://new.souqalharim.com/add/CommentForUser?productId=325&userId=5&comment=abcd
He probado esto en Mozilla RESTClient y funciona bien.
Editar 2
Después de revisar más, encontré protected Map<String, String> getParams() throws AuthFailureError {
no se llama. ¿Alguna idea de por qué está pasando esto?
- Org.json.JSONArray no se puede convertir a JSONObject
- UnitTest JSONObject muestra null
- Android studio no puede resolver import org.json.JSONObject
- Retrofit + OkHttp + GZIP-ed JSON
- Uso de Retrofit para acceder a una API con key / id
- Cómo crear un JSONObject de objetos? Androide
- NumberFormatException en GSON al convertir String a doble
- ¿Cómo se puede leer un archivo json en Android usando Ionic y AngularJS Frameworks?
El problema está abajo.
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Method.POST, act.getString(R.string.CommentForUserURL), null, new Response.Listener<JSONObject>() { ^^^^
Debería ser
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Method.POST, act.getString(R.string.CommentForUserURL), new JSONObject(params), new Response.Listener<JSONObject>() { ^^^^^^^^^^^^^^^^^^^^^^
Copie el código del protected Map<String, String> getParams()
antes de final JsonObjectRequest
.
¡¡¡Eso es!!!
La razón es como abajo.
El JsonObjectRequest es JsonRequest extendido que sobreescribe el método getBody()
directamente, por lo que su getParam () nunca invocaría, le recomiendo que extienda StringRequest en lugar de JsonObjectRequest.
Su puede comprobar esta respuesta para más detalles.
Intente cambiar el permiso de archivo php
a 755
.
- ¿Alguien ha usado Robotium o Calculon para probar las aplicaciones de Android?
- Mock GPS Provider sólo funciona en modo de depuración