안드로이드 개발 질문/답변
(글 수 45,052)
private URLConnection uConn;
private URL m_UrlRecWeather;
private InputStream in;
public void xmlReceive(int offset){
Log.i("xmlReceive", "START XMLRECEIVE");
String m_sdefaultUrl = http://www.웹주소.com/~~~.php?id="+offset
String m_sConnectUrl;
int offset=1;
m_sConnectUrl = m_sdefaultUrl + offset;
try {
m_UrlRecWeather = new URL(m_sConnectUrl);
uConn = m_UrlRecWeather.openConnection();
uConn.setConnectTimeout(7000);
uConn.setReadTimeout(7000);
in = uConn.getInputStream();
xpp.setInput(in, "euc-kr");
xmlParsing(xpp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
다음과 같이 URLConnection 을 이용했습니다.
xmlParsing() 메소드에서 실제적인 xmlPullParser 작업이 이루어지고 있구요
에뮬레이터나 기계에서 테스트해보면 이상이 없는데
기계두대를 동시에 접속 시도했을 때 잘될때도 있고
한대가 접속성공하고 한대는 무한대기상태로 갔다가 "응답하지 않습니다 종료하시겠습니까"?
라는 메시지가 나오면서 프로세스가 강제종료 될때도 있습니다.
다른 부분은 이상없는거 같은데 연결접속하는 부분에서 이상이 생기는게 거의 확실한것 같아요 ㅠ.ㅠ
좋은 방법 없을까요?
테스트기기는 모토로이와 NEXUS S 였습니다.
private URL m_UrlRecWeather;
private InputStream in;
public void xmlReceive(int offset){
Log.i("xmlReceive", "START XMLRECEIVE");
String m_sdefaultUrl = http://www.웹주소.com/~~~.php?id="+offset
String m_sConnectUrl;
int offset=1;
m_sConnectUrl = m_sdefaultUrl + offset;
try {
m_UrlRecWeather = new URL(m_sConnectUrl);
uConn = m_UrlRecWeather.openConnection();
uConn.setConnectTimeout(7000);
uConn.setReadTimeout(7000);
in = uConn.getInputStream();
xpp.setInput(in, "euc-kr");
xmlParsing(xpp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
다음과 같이 URLConnection 을 이용했습니다.
xmlParsing() 메소드에서 실제적인 xmlPullParser 작업이 이루어지고 있구요
에뮬레이터나 기계에서 테스트해보면 이상이 없는데
기계두대를 동시에 접속 시도했을 때 잘될때도 있고
한대가 접속성공하고 한대는 무한대기상태로 갔다가 "응답하지 않습니다 종료하시겠습니까"?
라는 메시지가 나오면서 프로세스가 강제종료 될때도 있습니다.
다른 부분은 이상없는거 같은데 연결접속하는 부분에서 이상이 생기는게 거의 확실한것 같아요 ㅠ.ㅠ
좋은 방법 없을까요?
테스트기기는 모토로이와 NEXUS S 였습니다.
2011.03.18 17:01:16
설명하신 내용만 들어 볼때는 서버쪽문제는 아닐까요? 만약에 서버쪽에서 던져주는 xml화일을 실제 디스크에 저장해서 보낸다면 파일을 동시에 쓰고 읽기가 된다면 모르겠지만, 쓰기는 동시에 되지 않을 텐데... 그런 문제는 아닐까요? 만약에 실제로 파일을 생성후에 보낸다면 메모리에서 바로 보내는방법이나 파일이름을 중복되지 않게 만들거나 해서 나중에 지우는 방법은....
2011.03.21 10:12:21
음 제가 아직 개발시작한지 2주밖에 안된 초짜라 잘 이해가 안가네여 ㅠ.
그런데 마지막 exception 처리 부분에서 if((in != null) { in.close() }
시켜주었더니 오류가 현저하게 줄어들었으나 아예 없어진건 아니고 한번씩 다음과 같은 에러 메시지를 출력하면서
리스트를 뿌려주지 못하고 있습니다..
java.net.SocketTimeoutException: Socket is not connected
at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocket(OSNetworkSystem.java:131)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:247)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:535)
at java.net.Socket.connect(Socket.java:1054)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool.getHttpConnection(HttpConnectionManager.java:145)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager.getConnection(HttpConnectionManager.java:67)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getHTTPConnection(HttpURLConnection.java:821)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:807)
at kr.somewhere.Preaches.xmlReceive(Preaches.java:90)
at kr.somewhere.Preaches.onCreate(Preaches.java:259)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2460)
at android.app.ActivityThread.startActivityNow(ActivityThread.java:2336)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648)
at android.widget.TabHost.setCurrentTab(TabHost.java:320)
at android.widget.TabHost.addTab(TabHost.java:213)
at kr.somewhere.TabWidget.onCreate(TabWidget.java:38)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2460)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2513)
at android.app.ActivityThread.access$2200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1864)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4364)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
소켓이 뭔지도 모르는지라 socket is not connection 이라고 메시지가 자꾸 뜨는게 이게 뭔소린지 ㅠ.
그런데 마지막 exception 처리 부분에서 if((in != null) { in.close() }
시켜주었더니 오류가 현저하게 줄어들었으나 아예 없어진건 아니고 한번씩 다음과 같은 에러 메시지를 출력하면서
리스트를 뿌려주지 못하고 있습니다..
java.net.SocketTimeoutException: Socket is not connected
at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocket(OSNetworkSystem.java:131)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:247)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:535)
at java.net.Socket.connect(Socket.java:1054)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool.getHttpConnection(HttpConnectionManager.java:145)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager.getConnection(HttpConnectionManager.java:67)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getHTTPConnection(HttpURLConnection.java:821)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:807)
at kr.somewhere.Preaches.xmlReceive(Preaches.java:90)
at kr.somewhere.Preaches.onCreate(Preaches.java:259)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2460)
at android.app.ActivityThread.startActivityNow(ActivityThread.java:2336)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648)
at android.widget.TabHost.setCurrentTab(TabHost.java:320)
at android.widget.TabHost.addTab(TabHost.java:213)
at kr.somewhere.TabWidget.onCreate(TabWidget.java:38)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2460)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2513)
at android.app.ActivityThread.access$2200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1864)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4364)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
소켓이 뭔지도 모르는지라 socket is not connection 이라고 메시지가 자꾸 뜨는게 이게 뭔소린지 ㅠ.



