HttpUrlConnection.openConnection перестал работать во второй раз

Я знаю, что эта проблема должна быть устранена с System.setProperty ("http.keepAlive", "ложь"); прежде openConnection, но это не работало мне. Сначала примерьте этот код работы, вторые сбои. Даже если я пробую этот запрос меньше чем после 5 секунд, он также работает. Если я ожидаю больше, чем которые, это перестало работать снова

Это - мой код:

    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());

Я получаю исключение на последней строке:

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)

У кого-то есть идея обо что случилось здесь?.Спасибо!

32
задан Yasir Khan 11 October 2012 в 05:35
поделиться

2 ответа

Я решил проблему. Здесь я оставляю вам код, на случай, если он может кому-то пригодиться. В основном я вижу в Google тенденцию к использованию HttpClient / HttpGet вместо HttpUrlConnection.Я попробовал с этими классами, и все сработало:

final HttpClient client = new DefaultHttpClient();
final HttpGet conn = new HttpGet(mURL.toString());

OAuthConsumer consumer = mOAuthManager.getPostConsumer();
consumer.sign(conn);
HttpResponse response = client.execute(conn);
InputSource is = new InputSource(response.getEntity().getContent());
3
ответ дан 27 November 2019 в 20:39
поделиться

Я считаю, что ваша проблема заключается в порядке вашего кода. Проверьте эти методы в URLConnection JavaDocs - setRequestProperty не должен вызываться после того, как соединение установлено на mUrl.openConnection (). Он может работать в первый раз, потому что соединение установлено, затем вы меняете настройки, которые ни на что не влияют, пока вы в следующий раз не попытаетесь установить соединение. Попробуйте вместо этого использовать конструктор HttpURLConnection, чтобы вы могли вызвать connect () после установки свойств.

0
ответ дан 27 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: