Json no funciona con HttpPost probablemente alrededor de setEntity
Estoy utilizando este código para enviar esto a mi archivo php. El archivo busca lo que viene así.
file_put_contents('dump.txt', "POST: \n" . print_r($_POST, true) . "\n\n\n GET: \n" . print_r($_GET, true));
Estoy enviando el json como este:
- ¿Cómo medir el tiempo de solicitud y respuesta del servidor?
- Cómo convertir json objeto en cadena en android ..?
- Java.lang.ClassCastException: org.json.simple.JSONArray no se puede convertir en org.json.JSONArray
- Mapping de Jackson Objeto o lista de objetos dependiendo de la entrada de json
- Enviar JSON como una solicitud POST al servidor por AsyncHttpClient
public void postData(String url,JSONObject json) { HttpClient httpclient = new DefaultHttpClient(); String object = "?data=" +json.toString(); System.out.println("object:" + object); try { HttpPost httppost = new HttpPost(url.toString()); httppost.setHeader("Content-type", "application/json"); System.out.println("url:" + url.toString()); StringEntity se = new StringEntity(object); System.out.println("json:" + json.toString()); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httppost.setEntity(se); HttpResponse response = httpclient.execute(httppost); String temp = EntityUtils.toString(response.getEntity()); System.out.println("response:" + response); int statusCode = response.getStatusLine().getStatusCode(); System.out.println("Statuscode " + statusCode); if(statusCode==200) { Toast.makeText(LbsGeocodingActivity.this, "Verstuurd", Toast.LENGTH_LONG).show(); } else if(statusCode!=200) { Toast.makeText(this, statusCode, Toast.LENGTH_LONG).show(); } /* try { String responseBody = EntityUtils.toString(response.getEntity()); Toast.makeText(this, responseBody, Toast.LENGTH_LONG).show(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } catch (ClientProtocolException e) { } catch (IOException e) { } }
Los archivos de registro son los siguientes:
01-08 09:36:00.278: I/System.out(1124): object:?data={"id":"69403","timestamp":"08-01-2013 09:36:00","longitude":"-122.084095","latitude":"37.422005"} 01-08 09:36:00.298: I/System.out(1124): json:{"id":"69403","timestamp":"08-01-2013 09:36:00","longitude":"-122.084095","latitude":"37.422005"} 01-08 09:36:01.038: I/System.out(1124): response:org.apache.http.message.BasicHttpResponse@412d1b38 01-08 09:36:01.038: I/System.out(1124): Statuscode 200
He dejado fuera la url por razones de seguridad ..
Pero estoy recibiendo un archivo vacío en dump.txt
POST: Array ( ) GET: Array ( )
EDITAR
Algo está mal con la setEntity (o en algún lugar por ahí), porque cuando ya pegar? Data = en la url puedo obtener esto desde el archivo PHP:
POST: Array ( ) GET: Array ( [data] => )
- Gson - convierta de Json a una clase ArrayList <T>
- Android: crear JSON Array y JSON Object
- Android y GSON lanzando No-Args Constructor no encontrado excepción
- JSON Parsing problema con Spinners
- Volley OutOfMemoryError
- Sólo el hilo original que creó una jerarquía de vistas puede tocar su excepción de vistas
- Enviar un objeto JSON de Android a servidor PHP con el método POST y HttpURLConnection
- Envío de una solicitud JSON HTTP POST desde Android
la forma en que envío JSON con mi DefaultHttpClient
en mi aplicación funciona perfectamente:
public static HttpUriRequest createPostForJSONObject( JSONObject params, String url) { HttpPost post = new HttpPost(url); post.setEntity(createStringEntity(params)); return post; } private static HttpEntity createStringEntity(JSONObject params) { StringEntity se = null; try { se = new StringEntity(params.toString(), "UTF-8"); se.setContentType("application/json; charset=UTF-8"); } catch (UnsupportedEncodingException e) { Log.e(TAG, "Failed to create StringEntity", e); exception = e; } return se; }
para ejecutar esta solicitud en tu código todo lo que necesitas hacer es:
public void postData(String url,JSONObject json) { HttpClient httpclient = new DefaultHttpClient(); try { HttpPost post = createPostForJSONObject(json, url); HttpResponse response = httpClient.execute(post); // DO YOUR THING } catch Exception { // HANDLE EXCEPTION } }
- Error de compilación del administrador de ubicación de Android
- Cambio de modo VideoView en línea / pantalla completa