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?
- ¿Cómo POST pares clave / valor en lugar de un objeto JSON utilizando Spring para Android?
- Jellybean / ICS Método de publicación HTTP Android + WebView.RestoreState
- Necesito una opción alternativa a HttpClient en Android para enviar datos a PHP ya que ya no es compatible
- Volea solicitud POST, 400 error
- Cálculo del tamaño de Post Content-Length para el archivo codificado en Base64
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
- Android: envía el archivo de imagen al servidor DB
- Hilos y uso de tareas Asynctask para httppost
- Cómo agregar parámetros a HttpURLConnection mediante POST
- Publicar un servicio JSONArray en WCF desde android
- Android: cargar imagen y JSON utilizando MultiPartEntityBuilder
- Cómo enviar una cadena que contiene% símbolo a webservice usando HttpPost en android?
- El host de destino no debe ser nulo o configurado en parámetros
- Android Volley Post Solicitud. ¿Cómo setEntity?
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(); } } } }