본문 바로가기

자바의 정석 정리

자바의 정석 - 16.4 URLConnection

16.4.1 URLConnection

  • URL간의 통신연결을 나타내는 클래스의 최상위 클래스
  • 추상클래스
  • method
import java.net.URL;
import java.net.URLConnection;

public class NetworkEx3 {
 public static void  main(String args[]) {
  URL url = null;
  String address = "http://news.naver.com/main/ranking/read.nhn?mid=etc&sid1=111&rankingType=" +
    "popular_day&oid=008&aid=0002862578&date=20120622&type=1&rankingSeq=3&rankingSectionId=100";
  String line = "";

  try {
   url = new URL(address);
   URLConnection conn = url.openConnection();

   System.out.println("conn.toString():"+conn);
   System.out.println("getAllowUserInteraction():" + conn.getAllowUserInteraction()); //UserInteraction의 허용여부를 반환한다
   System.out.println("getConnectTimeout():" + conn.getConnectTimeout());// 연결종료시간을 천분의 일초로 반환한다.
   System.out.println("getContent():" + conn.getContent()); //content객체를 반환한다
   System.out.println("getContentEncoding():" + conn.getContentEncoding());//content의 인코딩을 반환한다.
   System.out.println("getContentLength():" + conn.getContentLength());//conten의 크기를 반환한다.
   System.out.println("getContentType():" + conn.getContentType());//content의 typ을 반환한다
   System.out.println("getDate():" + conn.getDate());//헤더의 date필드의 값을 반환한다.
   System.out.println("getDefaultAllowUserInteraction():" + conn.getDefaultAllowUserInteraction());//defaultAllowUserInteraction의 값을 반환한다.
   System.out.println("getDefaultUseCaches():" + conn.getDefaultUseCaches()); //useCache의 디폴트 값을 얻는다.
   System.out.println("getDoInput():" + conn.getDoInput());//dolnput필드값을 얻는다.
   System.out.println("getDoOutput():" + conn.getDoOutput());//doOutput필드값을 얻는다.
   System.out.println("getExpiration():" + conn.getExpiration());//자원(URL)의 만료일자를 얻는다(천분의 일초단위)
   System.out.println("getHeaderFields():" + conn.getHeaderFields());//해더의 n번째 필드를 읽어온다.
   System.out.println("getIfModifiedSince():" + conn.getIfModifiedSince());//ifModifiedSince(변경여부)필드의 값을 반환한다.
   System.out.println("getLastModified():" + conn.getLastModified());//LastModified(최종변경일) 필드의 값을 반환한다.
   System.out.println("getReadTimeout():" + conn.getReadTimeout());//읽기제한시간을 설정한다.(천분의 일초)
   System.out.println("getURL():" + conn.getURL());//URLConnection의 URL의 값을 변환한다.
   System.out.println("getUseCaches():" + conn.getUseCaches());//캐쉬의 사용 여부를 반환한다.
  } catch(Exception e) {
   e.printStackTrace();
  }
 } // main
}
  • BufferdReader 사용예제
import java.net.*;
import java.io.*;

public class NetworkEx4{
    public static void main(String[] args){
      URL url = null;
      BufferedReader input = null;
      String address = "http://www.javahome.com/sample/hello.html";
      String line ="";

      try{
          url = new URL(address);

          input = new BufferedReader(new InputStreamReader(url.openStream()));

          while((line= input.readline()) != null) {
              System.out.println(line);
          }
          input.close();
      }catch(Exception e){
          e.printStackTrace();
      }
    }
}
  • FileOuputStream 사용예제
import java.net.*;
import java.io.*;

public class NetworkEx5{
    public static void main(String[] args){
      URL url = null;
      InputStream in = null;
      FileOutputStream out = null;
      String address = "http://www.javahome.com/sample/hello.zip";
      int ch = 0;

      try{
          url = new URL(address);
          in = url.openStream();
          out = new FileOutputStream("hello.zip");

          while((ch= inlread()) != -1) {
              out.writy(ch);
          }
          in.close();
          out.close();
      }catch(Exception e){
          e.printStackTrace();
      }
    }
}