마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

jsp 연동간에 질문이 있습니다.

0 추천
현재 jsp와 오라클간에 연동은 끝마친 상태이구요...
이제 안드로이드와 jsp간에 연동만 남았습니다.
그런데 어플은 실행이 잘되는데 jsp의 값을 읽어 오지 못하는것 같습니다.


 URL url = new URL("http://192.168.11.226:9090/login1/Login_Check.jsp?userid="
+userid+"&userpwd="+userpwd);

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 DocumentBuilder builder = factory.newDocumentBuilder(); //XML문서 빌더 객체를 생성
 Document document = builder.parse(url.openStream()); //XML문서를 파싱
 document.getDocumentElement().normalize(); // 공백등 제거
 // 문서에서 result, msg태그 중 0번째 요소를 반환
 Log.i("xml3 ","msg/"+msg);
 Element resultTag = (Element) document.getElementsByTagName("result").item(0);
 Element msgTag = (Element) document.getElementsByTagName("msg").item(0);
 // result, msg 태그의 첫번째 자식은 TEXT노드, getNodeValue() 메서드를 이용하여서 텍스트값 추출
 Log.i("xml4 ","msg/"+msg);
 rtncode =  resultTag.getFirstChild().getNodeValue(); 
 msg = msgTag.getFirstChild().getNodeValue();
 
Log.i("xml parser","rtncode/"+rtncode);
Log.i("xml parser","msg/"+msg);

} catch (Exception e) {
 Log.e("Xml1","예외 발생",e);
 e.printStackTrace();
 }


여기서    Log.e("xmlq", 예외발생") 이부분 부터 에러가 발생하는데요...


android.os.NetworkOnMainThreadException 이 문구와
04-05 17:28:54.646: E/Xml1(11192): android.os.NetworkOnMainThreadException
04-05 17:28:54.646: E/Xml1(11192):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1144)
04-05 17:28:54.646: E/Xml1(11192):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
04-05 17:28:54.646: E/Xml1(11192):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
04-05 17:28:54.646: E/Xml1(11192):  at libcore.io.IoBridge.connect(IoBridge.java:112)
04-05 17:28:54.646: E/Xml1(11192):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
04-05 17:28:54.646: E/Xml1(11192):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
04-05 17:28:54.646: E/Xml1(11192):  at java.net.Socket.connect(Socket.java:832)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at java.net.URL.openStream(URL.java:462)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at com.example.myapp.LoginActivity$1.onClick(LoginActivity.java:67)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at android.view.View.performClick(View.java:4475)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at android.view.View$PerformClick.run(View.java:18786)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at android.os.Handler.handleCallback(Handler.java:730)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at android.os.Handler.dispatchMessage(Handler.java:92)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at android.os.Looper.loop(Looper.java:137)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at android.app.ActivityThread.main(ActivityThread.java:5419)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at java.lang.reflect.Method.invokeNative(Native Method)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at java.lang.reflect.Method.invoke(Method.java:525)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
04-05 17:28:54.646: E/Xml1(11192): &nbsp;at dalvik.system.NativeStart.main(Native Method)
 
이런 문구가 나오는데...인터넷을 찾아보니 스레드 문제라는 말이 많던데...

구체적으로 어떤 문제인지 알고 싶습니다... 왠만한 에러분석은 하겠는데...네트워크 에러분석이라 그런지 너무 모르는게 많네요...

답변주시면 감사하겠습니다.

 

rlawlxo12 (180 포인트) 님이 2014년 4월 5일 질문

1개의 답변

+1 추천
exception에 친절하게 문제가 뭔지 나오네요. network 관련 작업을 메인쓰레드에서 해서 그런겁니다. 네트웍 관련 작업은 쓰레드를 하나 더 만들어서, 그 내부에서 해야 합니다. (Thread 나 AsyncTask 쪽을 알아보세요)

UI 쓰레드에서 시간이 오래 걸리는 작업을 하면 멈춰버리기 때문이죠.
잇힝국대통령 (3,750 포인트) 님이 2014년 4월 7일 답변
...