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

외부 php소스와 연결 오류입니다. 도와주세요.

0 추천

AsyncTask 에서 http://151.170.73.171:8321/appcon/remake/quizb_listb.php

요기 제가 만든 가상ip로 접속하여 데이터를 끌어오려고 합니다.(외부에서는 접속안됨, 내부에서만 접속됨)

시뮬레이터로 하면 AsyncTask가 동작하여 위의 php파일로 접근해 데이터를 읽어오는데,,, 어떨때는 되고, 어떨때는 안되는 오류가 발생합니다.

안될때의 오류코드는 다음과 같습니다.

 

 

W/System.err: java.io.FileNotFoundException: http://151.170.73.171:8321/appcon/remake/quizb_listb.php

W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)

W/System.err:     at logistics.image.quiz.wanttoquizman.ActQuizb_Problem_A$back_quizbloop.doInBackground(ActQuizb_Problem_A.java:456)

W/System.err:     at logistics.image.quiz.wanttoquizman.ActQuizb_Problem_A$back_quizbloop.doInBackground(ActQuizb_Problem_A.java:427)

W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:304)

W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)

W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)

W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)

W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)

 

소스

image 

화면에 버튼 3개가있으며 모두 동일한 액티비티의 동일한 AsyncTask 작업만 하게 되며, intent로 전달되는 값만 다르게 됩니다.

intent로 받은 typeno 값이 5, 9일때는 php연결이 되나 7일때는 안됩니다... 

웹으로 php소스 직접 값 전달하여 실행했을 때 typeno 값이 5, 7, 9 이더라도 모두 잘 동작합니다.

 

뭐가 문제일까요 ㅠㅠ

dbdomino (200 포인트) 님이 2016년 12월 12일 질문

1개의 답변

0 추천

안녕하세요

소스상에는 문제가 없는 것 같습니다만... 5,9일때는 동작하고 7일때는 동작하지 않는다...

Line 456 HttpURLConnectionImpl.getInputStream() << 여기서 에러나는거니

디버깅걸고 데이터를 확인하시면서 서버결과 코드를 확인해보시는게 좋을 것 같습니다.

우선 중간에 아래와 같은 예외처리를 해보시고 서버에서 응답코드와 응답된 값이 어떻게 오는지 확인해보실래요?

// 200 성공코드
// 400 문법에러
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
   // 성공시 처리
}else{
  // 실패시 처리
}

 

히로시 (10,800 포인트) 님이 2016년 12월 13일 답변
실패할때 값이 500이 나오네요.
500 에러는 서버에러 아닌가요?
서버쪽에 처리 하는 부분을 확인 하셔야 할 것 같습니다.
덕분에 오류수정 했습니다.
아무래도 php문에서 loop돌리는데 돌리는 횟수를 정적으로 맞춰놓다보니 어떤값이 들어갔을땐 되고 어떤값이 들어갔을땐 안되더군요.
정적으로 맞춰도 웹상에서 실행할때는 아무문제 없던데... 안드로이드에서 접근할때는 이게 뭔가 틀어지나봐요.
그래서 횟수를 동적으로 변경했더니 문제해결되었습니다. 감사합니다 ㅎㅎ
...