public static InputStream GetInputStream(String _url){
  
  InputStream rs = null;
  
  try {
   URL url = new URL("_url);
   HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
   httpConnection.setConnectTimeout(3000);
   httpConnection.setReadTimeout(5000);
   int responseCode = httpConnection.getResponseCode();
   if (responseCode == HttpURLConnection.HTTP_OK) {
    
    rs = httpConnection.getInputStream();
    
   } else {
   }
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
  }
  
  return rs;
 }


xml 파싱을 위해 위와 같이 스트림을 얻을 려고 하는데요

매번은 아니지만 디바이스를 장시간 방치한 후 시도 하거나 네트웍이 약하거나, 네트웍이 강하더라고 가변적으로

소켓 타임아웃이 일어나서 불안한 상태입니다..

아래는 LogCat의 내용입니다.

 

11-02 13:06:21.460: WARN/System.err(8152): java.net.SocketTimeoutException
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:451)
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:75)
11-02 13:06:21.460: WARN/System.err(8152):     at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:168)
11-02 13:06:21.460: WARN/System.err(8152):     at java.io.BufferedInputStream.read(BufferedInputStream.java:227)
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.readLine(HttpURLConnectionImpl.java:671)
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.readResponseHeaders(HttpURLConnectionImpl.java:699)
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getFromNetwork(HttpURLConnectionImpl.java:1088)
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1041)
11-02 13:06:21.460: WARN/System.err(8152):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:736)

 

위의 소스에서 소켓타임아웃 익셉션을 피하기 위해서 수정해야 할 부분이나 추가 해야할 부분이 있으면 조언 부탁드립니다..

참고로 위의 소스는 반환되는 rs가 null이면 3번을 더 시도 하도록 구현되어 있습니다..