우선 처음 실행될때는 정상적으로 잘작동하는데 두번째 실행될때는
IOException 에러로 java.net.SocketTimeoutException: timeout 발생
그리고 그다음은 MalformedURLException 에서 Failed to connect to 주소명 오류가 발생합니다....
모든기기에서 그러는건아니고 몇개의 기기에서만 간혈적으로 발생중입니다.
웹개발자이다보니 주먹구구식으로 어플개발중인데...도움좀 부탁드립니다 ㅠ
public class RequestHttpURLConnection {
public String request(String _url, ContentValues _params){
HttpURLConnection urlConn = null;
StringBuffer sbParams = new StringBuffer();
if (_params == null)
sbParams.append("");
else {
boolean isAnd = false;
String key;
String value;
for(Map.Entry<String, Object> parameter : _params.valueSet()){
key = parameter.getKey();
value = parameter.getValue().toString();
if (isAnd)
sbParams.append("&");
sbParams.append(key).append("=").append(value);
if (!isAnd)
if (_params.size() >= 2)
isAnd = true;
}
}
try{
URL url = new URL(_url);
urlConn = (HttpURLConnection) url.openConnection();
// [2-1]. urlConn 설정.
urlConn.setConnectTimeout(1000); //서버에 연결되는 Timeout 시간 설정
urlConn.setReadTimeout(1000); // InputStream 읽어 오는 Timeout 시간 설정
urlConn.setRequestMethod("POST"); // URL 요청에 대한 메소드 설정 : POST.
urlConn.setRequestProperty("Accept-Charset", "euc-kr"); // Accept-Charset 설정.
//urlConn.setRequestProperty("Context_Type", "application/x-www-form-urlencoded;charset=euc-kr");
urlConn.setDoInput(true); // 읽기모드 지정
urlConn.setUseCaches(false); // 캐싱데이터를 받을지 안받을지
urlConn.setDoOutput(false); //POST 데이터를 OutputStream으로 넘겨 주겠다는 설정
urlConn.setDefaultUseCaches(false);
String strParams = sbParams.toString(); //sbParams에 정리한 파라미터들을 스트링으로 저장. 예)id=id1&pw=123;
OutputStream os = urlConn.getOutputStream();
os.write(strParams.getBytes("euc-kr")); // 출력 스트림에 출력.
os.flush(); // 출력 스트림을 플러시(비운다)하고 버퍼링 된 모든 출력 바이트를 강제 실행.
os.close(); // 출력 스트림을 닫고 모든 시스템 자원을 해제.
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "euc-kr"));
String line;
String page = "";
while ((line = reader.readLine()) != null){
page += line;
}
return page;
} catch (MalformedURLException e) { // for URL.
Log.d("debeg", "10:"+String.valueOf(e));
e.printStackTrace();
} catch (IOException e) { // for openConnection().
Log.d("debeg", "11:"+String.valueOf(e));
e.printStackTrace();
} finally {
Log.d("debeg","12");
if (urlConn != null) {
urlConn.disconnect();
}
}
return null;
}
}