2012-07-02 2 views
0

나는 webservices를 호출하고 데이터를 채우는 응용 프로그램을 만듭니다. 하지만 여기에 몇 가지 이상한 일들 때문에 occure.i IOException과 arrayIndexoutofBound와 오류가있어 ... 난 간단한 웹 서비스를 분석하는 데 SAX 파서를 사용합니다.IOException 파서에서

오류 ::

07-02 16:50:52.992: E/NearbyScreen(31762): SAX PARSER ERRORjava.lang.ArrayIndexOutOfBoundsException: length=8192; regionStart=-2888; regionLength=11080 
07-02 16:50:52.992: W/System.err(31762): java.lang.ArrayIndexOutOfBoundsException: length=8192; regionStart=-2888; regionLength=11080 
07-02 16:50:53.002: E/NearbyScreen(31762): SAX PARSER ERRORjava.io.IOException: Attempted read on closed stream. 
07-02 16:50:53.002: W/System.err(31762): at java.util.Arrays.checkOffsetAndCount(Arrays.java:1731) 
07-02 16:50:53.012: W/System.err(31762): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:484) 
07-02 16:50:53.012: W/System.err(31762): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 
07-02 16:50:53.012: W/System.err(31762): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 
07-02 16:50:53.012: W/System.err(31762): at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103) 
07-02 16:50:53.012: W/System.err(31762): at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:134) 

코드 :

DefaultHttpClient client = new DefaultHttpClient(); 
String ConcateURL = String.valueOf(newViewPortlatitude) + "," + String.valueOf(newViewPortlongitude)+"/TOUR/1000/1/5/"; 
URL URLPush = new URL(getString(R.string.NearbyURL)+ConcateURL); 
       Log.i(TAG, "** URL ** ->" + URLPush); 
       HttpGet httpGet = new HttpGet(URLPush.toURI()); 
       HttpParams httpParams = httpGet.getParams(); 
       int timeoutdConnection = 30000; 
       HttpConnectionParams.setConnectionTimeout(httpParams, 
         timeoutdConnection); 



       httpGet.setParams(httpParams); 
       HttpResponse response = client.execute(httpGet); 
       HttpEntity entity = response.getEntity(); 

       if (entity != null) { 
        Log.i("MyMapActivity", "--1--"); 
        instream = entity.getContent(); 
        Log.i("MyMapActivity", "--2--"); 
       } 
       if (instream != null) { 

        Log.i("MyMapActivity", "--3--"); 

        /********** test *******/ 
        SAXParserFactory saxPF = SAXParserFactory.newInstance(); 
        SAXParser saxP = saxPF.newSAXParser(); 
        XMLReader xmlR = saxP.getXMLReader(); 
        System.out.println("url >>>>>" + URLPush); 
        NearByHandler myXMLHandler = new NearByHandler(); 
        xmlR.setContentHandler(myXMLHandler); 
        xmlR.parse(new InputSource(instream)); 
        instream.close(); 

        whaleWatchingInfoList = myXMLHandler.getQuotes(); 
        // Fill Arraylist by Handler 
        Log.i(TAG, "whaleWatchingInfoList size " 
          + whaleWatchingInfoList.size()); 
        Log.w("AndroidParseXMLActivity", "Done"); 
       } 
      }catch (ConnectTimeoutException e) { 
       Log.e(TAG, "ConnectionTimeOUT " + e); 
       IsConnectionTimeoutException = true; 
       //Flag ConnectionTimout 
      } 
      catch (Exception e) { 
       Log.e(TAG, "SAX PARSER ERROR" + e); 
       e.printStackTrace(); 

       //Flag ConnectionTimout 
      } 

업데이트 : NearByHandler 클래스에서

07-02 17:10:52.042: D/Process(1606): com.android.server.am.ActivityManagerService.serviceDoneExecuting(ActivityManagerService.java:12474) 
07-02 17:10:52.042: D/Process(1606): android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:723) 
07-02 17:10:52.042: D/Process(1606): com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1714) 
07-02 17:10:52.042: D/Process(1606): android.os.Binder.execTransact(Binder.java:338) 
07-02 17:10:52.042: D/Process(1606): dalvik.system.NativeStart.run(Native Method) 
07-02 17:10:53.643: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -66 
07-02 17:10:56.656: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -65 
07-02 17:10:59.669: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -65 
07-02 17:11:02.512: D/PhoneStatusBarPolicy(1695): silentresetvalue = 0, mTimerEnabled = false 
07-02 17:11:02.512: D/PhoneStatusBarPolicy(1695): updateSignalStrength(), in service, remove timer 
07-02 17:11:02.542: D/PhoneStatusBarPolicy(1695): isCdma():false hasService:true mSimState=UNKNOWN gprsState=0 mDataState=-1 dataActivity=0 mPhone.htcModemLinkOn:false hspa==true 
07-02 17:11:02.542: D/PhoneStatusBarPolicy(1695): updateDataIcon(), silentresetvalue = 0, mTimerEnabled = false 
07-02 17:11:02.542: D/PhoneStatusBarPolicy(1695): updateDataIcon(), in data service, do nothing 
07-02 17:11:02.672: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -66 
07-02 17:11:05.685: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -65 
07-02 17:11:08.688: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -64 
07-02 17:11:09.449: I/global(2636): In close() at SocketHttpClientConnection 
07-02 17:11:09.449: I/global(2636): call socket close in SocketHttpClientConnection, socket=Socket[address=www.google-analytics.com/74.125.236.101,port=80,localPort=43849] 
07-02 17:11:11.701: D/WifiStateMachine(1606): fetchRssiAndLinkSpeedNative RSSI = -65 
07-02 17:11:13.833: D/AutoSetting(2358): service - handleMessage() incoming message, what:50 
07-02 17:11:13.833: D/AutoSetting(2358): service - handleMessage() stop self 
07-02 17:11:13.843: D/AutoSetting(2358): service - onDestroy() 
07-02 17:11:13.873: D/AutoSetting(2358): service - handleMessage() incoming message, what:100 
07-02 17:11:13.893: D/AutoSetting(2358): service - onDestroy() END 
07-02 17:11:13.903: D/Process(1606): killProcessQuiet, pid=2358 
07-02 17:11:13.903: D/Process(1606): dalvik.system.VMStack.getThreadStackTrace(Native Method) 
07-02 17:11:13.903: D/Process(1606): java.lang.Thread.getStackTrace(Thread.java:599) 
07-02 17:11:13.903: D/Process(1606): android.os.Process.killProcessQuiet(Process.java:837) 

답변

0

연결 시간 제한을 30 초로 설정합니다. 연결이 시간 초과되어 스트림이 닫혔습니다. 이것은 디버그 모드에서 쉽게 발생할 수 있습니다. 이 기간을 늘려보십시오.

+0

그럴 수는 없습니다 .. 거기에 맞는 메시지가 있습니다. –

+0

모든 스택 추적을 원래 질문에 추가 할 수 있습니까? 현재는 스택 추적의 맨 위 만 표시됩니다. – Deniz

+0

NearByHandler는 비동기 작업을 수행하지 않습니다. – Deniz

0

, 당신은의 값을 가져 오는 부분 태그가 예외를 던지고 있습니다. ,

그래서 당신은 웹 서버에서 데이터를 가져 오는하고 분석하는 장소에서 예외를 처리하는 try/catch 블록를 사용 때문에 .. 대신 유효한 값의 널 (null) 값을 갖는 의 이유에.

+0

나는 그것을 둘러 싸고 이미 잡았습니다 ... 한 번에 닫을 힘이 없지만지도에 아무런 데이터가 없습니다. –