public String scrapData(String addr) {
StringBuilder xml = new StringBuilder();
URL url = null;
HttpURLConnection conn = null;
try {
url = new URL(addr);
conn = (HttpURLConnection) url.openConnection();
if (conn != null) {
conn.setConnectTimeout(3000);
conn.setUseCaches(false);
int responseCode = conn.getResponseCode(); // ResponseCode를 저장합니다.
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream() ));
while (true) {
String line = br.readLine();
if (line == null)
break;
xml.append(line+"\n");
if(line.contains("<h3>")) break; //line 읽다가 <h3> 이 들어갔다면 읽기 중지.
}
br.close();
} else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) {
return "http not found";
} else if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
return "http unauthorized";
} else {
return "unknown connection interrupted. responce code : + responseCode;
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
return "MalformedURLException";
} catch (IOException e) {
e.printStackTrace();
return "IOEXCEPTION";
} finally {
conn.disconnect(); //connection close 해 줍니다
}
return xml.toString();
}
url을 주소로 받아서 html소스를 읽는 메소드 입니다.
문제는 한 번 호출 후, br.readLine() 하다가 중간에 break을 걸어서 빠져나오고.
다시 호출 하면 ResponseCode가 -1이 나옵니다.
또 다시 호출하면 정상 작동하구요..
한 마디로, 됐다 -> 안됐다 -> 됐다 -> 안됐다. 이런 식입니다. -0-;;
의심가는건 다음 부분이긴 한데,, 이유가 뭘 까요??