Envío de una solicitud JSON HTTP POST desde Android

Estoy utilizando el código a continuación para enviar una solicitud HTTP POST que envía un objeto a un servicio de WCF. Esto funciona bien, pero ¿qué pasa si mi servicio WCF necesita también otros parámetros? ¿Cómo puedo enviarlos desde mi cliente Android?

Este es el código que he escrito hasta ahora:

StringBuilder sb = new StringBuilder(); String http = "http://android.schoolportal.gr/Service.svc/SaveValues"; HttpURLConnection urlConnection=null; try { URL url = new URL(http); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setRequestMethod("POST"); urlConnection.setUseCaches(false); urlConnection.setConnectTimeout(10000); urlConnection.setReadTimeout(10000); urlConnection.setRequestProperty("Content-Type","application/json"); urlConnection.setRequestProperty("Host", "android.schoolportal.gr"); urlConnection.connect(); //Create JSONObject here JSONObject jsonParam = new JSONObject(); jsonParam.put("ID", "25"); jsonParam.put("description", "Real"); jsonParam.put("enable", "true"); OutputStreamWriter out = new OutputStreamWriter(urlConnection.getOutputStream()); out.write(jsonParam.toString()); out.close(); int HttpResult =urlConnection.getResponseCode(); if(HttpResult ==HttpURLConnection.HTTP_OK){ BufferedReader br = new BufferedReader(new InputStreamReader( urlConnection.getInputStream(),"utf-8")); String line = null; while ((line = br.readLine()) != null) { sb.append(line + "\n"); } br.close(); System.out.println(""+sb.toString()); }else{ System.out.println(urlConnection.getResponseMessage()); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(urlConnection!=null) urlConnection.disconnect(); } 

Publicación de parámetros Uso de POST: –

 URL url; URLConnection urlConn; DataOutputStream printout; DataInputStream input; url = new URL (getCodeBase().toString() + "env.tcgi"); urlConn = url.openConnection(); urlConn.setDoInput (true); urlConn.setDoOutput (true); urlConn.setUseCaches (false); urlConn.setRequestProperty("Content-Type","application/json"); urlConn.setRequestProperty("Host", "android.schoolportal.gr"); urlConn.connect(); //Create JSONObject here JSONObject jsonParam = new JSONObject(); jsonParam.put("ID", "25"); jsonParam.put("description", "Real"); jsonParam.put("enable", "true"); 

La parte que te perdiste es en el siguiente … es decir, como sigue ..

 // Send POST output. printout = new DataOutputStream(urlConn.getOutputStream ()); printout.writeBytes(URLEncoder.encode(jsonParam.toString(),"UTF-8")); printout.flush (); printout.close (); 

El resto de la cosa que usted puede hacerlo.

Probar algo como golpe:

 SString otherParametersUrServiceNeed = "Company=acompany&Lng=test&MainPeriod=test&UserID=123&CourseDate=8:10:10"; String request = "http://android.schoolportal.gr/Service.svc/SaveValues"; URL url = new URL(request); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setInstanceFollowRedirects(false); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("charset", "utf-8"); connection.setRequestProperty("Content-Length", "" + Integer.toString(otherParametersUrServiceNeed.getBytes().length)); connection.setUseCaches (false); DataOutputStream wr = new DataOutputStream(connection.getOutputStream ()); wr.writeBytes(otherParametersUrServiceNeed); JSONObject jsonParam = new JSONObject(); jsonParam.put("ID", "25"); jsonParam.put("description", "Real"); jsonParam.put("enable", "true"); wr.writeBytes(jsonParam.toString()); wr.flush(); wr.close(); 

Referencias:

  1. http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
  2. Java – enviar parámetros HTTP a través del método POST fácilmente
  • Tener problemas para conectarse al servicio wcf en localhost desde el emulador de Android
  • WCF vs WEB api vs Web servicios para el nuevo sitio web de comercio electrónico
  • Ksoap2 Android - ¿cómo especificar un espacio de nombres para las propiedades secundarias de un objeto complejo?
  • Xamarin Android - Hacer una petición de descanso con un parámetro complejo (objeto) lanza excepción, en .NET funciona bien (Usando fábrica de canales)
  • Obtención de imagen de la matriz de bytes en el objeto JSON a la aplicación de Android
  • Pasar objetos al servicio de jabón wcf desde android usando ksoap2; Envía y recibe 0
  • Recomendaciones para el formato / protocolo de .NET Web Service para Android, iPhone, etc.
  • Leer WCF REST fecha de android
  • Servidor para la notificación de empuje de GCM a android en C #
  • Solicitud de aplicaciones para Android Servicio WCF (SerializationException - utf-8 related)
  • Cómo consumir servicios WCF dependientes de la sesión usando Ksoap2-Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.