Código de respuesta inesperado para CONNECT: 400

Algunos de mis usuarios están recibiendo esta excepción mucho cuando están intentando conectarse.

java.io.IOException: Unexpected response code for CONNECT: 400 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeTunnel(HttpsURLConnectionImpl.java:509) at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:463) at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:442) at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81) at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:165) 

400 significa mala solicitud, pero la misma solicitud tiene éxito después de unos segundos. He comprobado la solicitud y no hay nada malo en ella. También he comprobado con los registros del servidor y parece que la solicitud aún no ha llegado a nuestro servidor.

Estoy usando un simple HttpUrlConnection para conectar.

 URL connectURL = new URL(url); HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setInstanceFollowRedirects(true); conn.setReadTimeout(30000); conn.setConnectTimeout(15000); conn.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("Accept-Encoding", "deflate, gzip"); connection.setRequestProperty("Content-Length", postParameters.length() + ""); conn.connect(); OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); writer.write(mRequestObj.getPostParameters()); writer.flush(); writer.close(); responseCode = conn.getResponseCode(); BufferedInputStream bis = null; try { bis = new BufferedInputStream(conn.getInputStream()); } catch(IOException io) { if(conn.getErrorStream() != null) bis = new BufferedInputStream(conn.getErrorStream()); else throw io; } ... 

¿Alguien más se enfrentó a este problema? ¿Algo que pueda ayudar?

Es una vieja pregunta, pero tal vez alguien lo encontrará útil.

Se lanzó una excepción debido a que el proxy tunneling falló por alguna razón. Es por eso que su servidor web no muestra nada, no fue alcanzado en absoluto.


La siguiente descripción se refiere al tipo de método CONNECT:

Esta especificación reserva el nombre del método CONNECT para su uso con un proxy que puede cambiar dinámicamente a ser un túnel

Se copió de la especificación HTTP .


Desafortunadamente, no puedes hacer mucho al respecto, a menos que tengas control sobre el servidor proxy. Lo que puede hacer es detectar una excepción y volver a intentar la conexión.

  • Estrategia de la aplicación de Android para realizar un seguimiento de una sesión de inicio de sesión
  • Usando HttpURLConnection y HttpsURLConnection para conectarse a un https?
  • ¿Cuál es la diferencia entre httpconnection en J2ME y HttpUrlConnection en Android (error HTTP 401)
  • Android KitKat HttpURLConnection desconectar AsyncTask
  • Java.io.IOException: final inesperado de la secuencia
  • Cómo cambiar de HttpClient a HttpUrlConnection
  • GetHttpResponseCode () devuelve -1 en android 2.2
  • Adición de legado HTTP a Android Studio
  • ¿Por qué hay flujos en la API HttpURLConnection?
  • HttpEntity está obsoleta en Android ahora, ¿cuál es la alternativa?
  • HttpURLConnection de Android: controla los redireccionamientos de HTTP
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.