将json发送到Web服务,接收null。 - Android

时间:2012-11-29 00:12:54

标签: android json web-services

我是新手。从服务器读取json的Web服务有效,但是当我通过Android中的json创建新记录时,它会发送,但是我收到了null。

代码

HttpPost post = new HttpPost("http://192.168.42.194/app/web/app.php/android/buscar");
post.setHeader("content-type", "application/json;charset=UTF-8");
try {
    JSONStringer dato = new JSONStringer().object().key("cadena").value("valor").endObject();
    StringEntity entidad = new StringEntity(dato.toString());
    post.setEntity(entidad);
    HttpClient cliente = new DefaultHttpClient();
    HttpResponse respuesta = cliente.execute(post);
    String obtiene = EntityUtils.toString(respuesta.getEntity());
    JSONObject object2 = new JSONObject(obtiene);
    String mensaje = object2.getString("cod");
    Log.e("LOG", mensaje.toString());
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setTitle("Your Title");
    alertDialogBuilder.setMessage("Enviado "+ mensaje);
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
} catch (Exception ex) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setTitle("Error");
    alertDialogBuilder.setMessage("Enviar " + query.getText());
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
}

1 个答案:

答案 0 :(得分:0)

尝试在StringEntity上设置标头而不是帖子本身,JSON默认为UTF-8,因此不需要

HttpClient cliente = new DefaultHttpClient();
JSONObject dato = new JSONObject();
try {
    HttpPost post = new HttpPost("http://192.168.42.194/app/web/app.php/android/buscar");
    dato.put("cadena", "valor");
    StringEntity entidad = new StringEntity(dato.toString());  
    entidad.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
    post.setEntity(entidad);
    HttpResponse respuesta = cliente.execute(post);
} catch (Exception ex) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setTitle("Error");
    alertDialogBuilder.setMessage("Enviar " + query.getText());
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
}