동작중인 url의 내용을 가지고 오는 소스는 아래와 같다

URL url 							= null;
URLConnection connection 			= null;
InputStream is 						= null;
InputStreamReader isr 				= null;
BufferedReader br 					= null;
FileOutputStream fo 				= null;
Writer out 							= null;
try{
	url 			= new URL(miniListUrlpath);
	connection 		= url.openConnection();
	connection.setConnectTimeout(1000);
	connection.setReadTimeout(1000);
	
	is 					= connection.getInputStream();
	isr 				= new InputStreamReader(is,"UTF-8");
	br 					= new BufferedReader(isr);
	
	String buf 		= null;
	String readStr = "";
	
	while(true){
		buf 	= br.readLine();
		if(buf == null) break;
		readStr += buf+"\n";
	}
	
	File compilefile 	= new File(targetFilePath+"/"+targetFileName);
	File compileDir		= new File(targetFilePath);
	if(!compileDir.exists()){
		compileDir.mkdirs();
	}
	if(!compilefile.exists()){
		compilefile.createNewFile();
	}
	fo = new FileOutputStream(compilefile);
	out = new OutputStreamWriter(fo,"UTF-8");
	out.write(readStr);
	out.flush();
}catch(IOException e){
	e.printStackTrace();
	isSuccess = false;
	System.out.println("IOException");
}finally{
	if(out != null){try{out.close();}catch(IOException e){}}
	if(fo != null){try{fo.close();}catch(IOException e){}}
	if(br != null){try{br.close();}catch(IOException e){}}
	if(isr != null){try{isr.close();}catch(IOException e){}}
	if(is != null){try{is.close();}catch(IOException e){}}
}


해당 소스를 이용해서 작업을 하는 경우 반드시 setConnectTimeout/setReadTimeout 이용해서 데이터를 가지고 오지 못하는 경우를 데비 해야 한다... 이것을 설정 하지 않는 경우 데이터를 받아 오지 못하는 상황 발생시 서버에 부하를 줄수 있다는걸 명심 해야 한다.


반응형
Posted by 질주하는구
,