En Android, realice una solicitud POST con datos de formulario codificados en URL sin utilizar UrlEncodedFormEntity

Tengo una cadena que ya está en el formato apropiado URLEncoded Form y me gustaría enviarlo a través de una solicitud POST en Android a un servidor PHP. Sé que el método para enviar formularios codificados en URL en Android utiliza UrlEncodedFormEntity y sé cómo usarlo . El problema con esto es que los datos entran en la función ya codificada URL y unidos por UrlEncodedFormEntity comerciales, por lo que usar UrlEncodedFormEntity implicaría un montón de trabajo extra para convertirlo en una List de NameValuePairs y prefiero no.

¿Así pues, cómo hago una petición POST apropiada que envía esta secuencia como el cuerpo del contenido?

Ya he intentado usar StringEntity , pero el servidor PHP no obtuvo ninguno de los datos ( $_POST objeto vacío).

Estoy probando contra http://test.lifewanted.com/echo.json.php que simplemente es

 <?php echo json_encode( $_REQUEST ); 

Aquí hay un ejemplo de los datos ya codificados:

PartnerUserID = correo electrónico% 40example.com & partnerUserSecret = mi contraseña & comando = Autenticar

Si no te importa usar una HttpURLConnection lugar de (recomendado) HttpClient entonces puedes hacerlo de esta manera:

 public void performPost(String encodedData) { HttpURLConnection urlc = null; OutputStreamWriter out = null; DataOutputStream dataout = null; BufferedReader in = null; try { URL url = new URL(URL_LOGIN_SUBMIT); urlc = (HttpURLConnection) url.openConnection(); urlc.setRequestMethod("POST"); urlc.setDoOutput(true); urlc.setDoInput(true); urlc.setUseCaches(false); urlc.setAllowUserInteraction(false); urlc.setRequestProperty(HEADER_USER_AGENT, HEADER_USER_AGENT_VALUE); urlc.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); dataout = new DataOutputStream(urlc.getOutputStream()); // perform POST operation dataout.writeBytes(encodedData); int responseCode = urlc.getResponseCode(); in = new BufferedReader(new InputStreamReader(urlc.getInputStream()),8096); String response; // write html to System.out for debug while ((response = in.readLine()) != null) { System.out.println(response); } in.close(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } 
  • ¿Qué tipo de url debería usar en android para enviar solicitud al servidor?
  • Error de autenticación al utilizar HttpPost con DefaultHttpClient en Android
  • Los primeros intentos de HTTP POST y GET son siempre lentos - ¿Está relacionado con el SO o con la red?
  • HttpPost funciona en proyecto Java, no en Android
  • Cómo establecer encabezados HttpPost para una solicitud de cliente en Java Android
  • Respuesta HTTP POST en WebView en android
  • Cómo agregar json al cuerpo de una publicación http en java
  • El nombre de host no puede ser nulo en HttpResponse para ejecutar android
  • ¿Cómo subir el archivo usando la biblioteca Volley en android?
  • Android: Enviar una matriz de bytes a través de HTTP POST
  • Pasar un parámetro en un Tornado HttpGet con varios parámetros
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.