Android no puede enviar solicitud GET con HttpURLConnection
Estoy intentando utilizar un HttpURLConnection en mi uso. He establecido mi método de solicitud a 'GET', pero cuando intento recuperar el flujo de salida, entonces el método se cambia a 'POST'! No estoy seguro de que sea la razón, pero mi servidor JSON (utilizo JAX-RS) devuelve una página en blanco cuando envío una solicitud usando un 'POST'.
Aquí hay un fragmento de mi código:
- Android: Carga de una foto en Cloudinary con devolución de llamada de progreso en HttpURLConnection
- Causado por: java.lang.NoSuchFieldError: com.squareup.okhttp.internal.http.HttpMethod.METHODS cuando uso retrofit
- DataOutputSteam me está lanzando una 'java.io.IOException: inesperado final de la secuencia'?
- HttpURLConnection.getInputStream () lanza SocketTimeoutException
- En HttpURLConnection ¿Por qué no JSONObject como Params trabajo pero String como Params están trabajando
// Create the connection HttpURLConnection con = (HttpURLConnection) new URL(getUrl() + uriP).openConnection(); // Add cookies if necessary if (cookies != null) { for (String cookie : cookies) { con.addRequestProperty("Cookie", cookie); Log.d("JSONServer", "Added cookie: " + cookie); } } con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); con.setRequestMethod("GET"); con.setConnectTimeout(20000); // Add 'Accept' property in header otherwise JAX-RS/CXF will answer a XML stream con.addRequestProperty("Accept", "application/json"); // Get the output stream OutputStream os = con.getOutputStream(); // !!!!! HERE THE REQUEST METHOD HAS BEEN CHANGED !!!!!! OutputStreamWriter wr = new OutputStreamWriter(os); wr.write(requestP); // Send the request wr.flush();
Gracias por su respuesta. Eric
- Pasar parámetros con HttpURLConnection
- HttpUrlConnection no encuentra el reto de NTLM en Android
- HttpURLConnection envío de la solicitud JSON POST a Apache / PHP
- Cómo deshabilitar la búsqueda de WWW-Authenticate encabezado en 401 en HttpUrlConnection en Android?
- HttpUrlConnection carga de archivo multipart con ProgressBar
- HttpUrlConnection.openConnection falla segunda vez
- Problema de corrupción de bases de datos precargado en la aplicación de Android
- Android descargar problemas de archivo binario
Pero las solicitudes GET se supone que no tienen contenido … por escrito en el flujo de salida de conexiones que está cambiando la naturaleza de la solicitud a un POST. La biblioteca está siendo bastante útil para detectar que está haciendo esto … el documento de getOutputStream explícitamente afirma "El método de solicitud predeterminada cambia a" POST "cuando se llama a este método."
Si necesita enviar datos al servidor en el GET, entonces debe codificarse en los parámetros de URL de la forma normal.
Eliminar con.setDoOutput(true);
de su código. A continuación, la solicitud de servicio web funciona bien con el método GET
HttpURLConnection utiliza el método GET de forma predeterminada. Utilizará POST si
setDoOutput(true)
ha sido llamado.
El comentario anterior se puede encontrar en la siguiente URL
Android HTTPURLConnection Clase
- android.database.sqlite.SQLiteConstraintException
- Esquinas redondeadas en ImageView en la fila ListView