Sé que este problema debería solucionarse con System.setProperty ("http.keepAlive", "false"); antes de openConnection, pero eso no funcionó para mí. Primero pruebe que este código funciona, el segundo falla. Incluso si intento esta solicitud después de menos de 5 segundos, también funciona. Si espero más que eso, vuelve a fallarHttpUrlConnection.openConnection falla la segunda vez
Este es mi código:
System.setProperty("http.keepAlive", "false");
HttpURLConnection conn = (HttpURLConnection) mURL.openConnection();
conn.setUseCaches(false);
conn.setRequestProperty("Connection","Keep-Alive");
conn.setRequestProperty("User-Agent", useragent);
conn.setConnectTimeout (30000) ;
conn.setDoOutput(true);
conn.setDoInput(true);
consumer.sign(conn);
InputSource is = new InputSource(conn.getInputStream());
consigo la excepción en la última línea:
java.io.IOException: Write error: I/O error during system call, Broken pipe
W/System.err(2164): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativewrite(Native Method)
W/System.err(2164): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.access$600(OpenSSLSocketImpl.java:55)
W/System.err(2164): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:583)
W/System.err(2164): at java.io.OutputStream.write(OutputStream.java:82)
W/System.err(2164): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.sendRequest(HttpURLConnectionImpl.java:1332)
W/System.err(2164): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1656)
W/System.err(2164): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
W/System.err(2164): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1153)
W/System.err(2164): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:253)
¿Alguien tiene una idea acerca de lo que está mal aquí ?. ¡Gracias!
Google ahora recomienda utilizar HttpURLConnection (a partir de pan de jengibre), ya que algunos de esos errores han sido corregidos: http: // android-developers.blogspot.com/2011/09/androids-http-clients.html –
¿Por qué esta solución soluciona el problema? –
Tarde o temprano, especialmente con el crecimiento de Android M, HttpClient se está depreciando. URLConnection se recomienda para aplicaciones con una larga vida por delante. – Josh