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:
- Publicar un servicio JSONArray en WCF desde android
- Aplicación de Android que se conecta a un servicio web - no funciona
- Solicitud de aplicaciones para Android Servicio WCF (SerializationException - utf-8 related)
- Cómo consumir servicio WCF con Android
- Llame a la variable de tipo de referencia WCF
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(); }
- ¿Cómo hacer SSO basada en reclamaciones para aplicaciones Android e IPhone usando ADFS STS?
- WCF vs WEB api vs Web servicios para el nuevo sitio web de comercio electrónico
- Consumir servicio WCF en android
- Cómo pasar un valor enum a wcf webservice
- Cómo enviar la cadena codificada base 64 de android a wcf
- Recomendaciones para el formato / protocolo de .NET Web Service para Android, iPhone, etc.
- Servidor para la notificación de empuje de GCM a android en C #
- Android post gzip
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:
- http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
- Java – enviar parámetros HTTP a través del método POST fácilmente
- Realización de una solicitud HTTPS mediante Android Volley
- Proveedor de contenido INSTALL_FAILED_CONFLICTING_PROVIDER (instalación del proveedor de contenido como un apk independiente)