자바 필수 URL 과 URLConnection 사용

5522 단어 JavaURLURLConnection
java.net.URL 류 는 URL 주 소 를 봉인 하고 URL 주 소 를 분석 하 는 기본 적 인 방법 을 제공 합 니 다.예 를 들 어 URL 의 호스트 이름과 포트 번 호 를 가 져 오 는 것 입 니 다.
java.net.URLConnection 은 응용 프로그램 과 URL 간 의 통신 링크 를 대표 하 며 이 URL 에 인 용 된 자원 을 읽 고 기록 할 수 있 습 니 다.
URLConnection 은 URL 보다 하나의 Connection 이 더 많아 보 입 니 다.이들 의 관계 도 이에 국한 되 나 요?
01、URL 이란 무엇 인가
URL 이 무엇 인지 알 기 위해 서 는 다른 두 개념 URI 와 URN 을 도입 해 야 한다.
무슨 소리 야?URL 도 모 르 고 또 두 개 야?걱정 마 세 요.제 가 마법 이 된 것 처럼 세 가 지 를 다 알 게 해 드릴 수 있어 요.
URI=Universal Resource Identifier,중국어 해석 은 통일 자원 표지 부호URL=Universal Resource Locator,중국어 해석 은 통일 자원 포 지 셔 닝 부호URN=Universal Resource Name,중국어 해석 은 통일 자원 명칭그들 간 의 관 계 는 다음 그림 과 같다.

이 그림 이 무슨 뜻 이 야,어 떡 하지?장 소 경 은 질문 이 있 으 면 갈 놈 에 게 물 어 본다.우 리 는 위 키 피 디 아 에 가서 물 어보 지 않 을 것 이다.
URI 는 URL 과 URN 또는 URL 과 URN 의 결합 체 로 나 눌 수 있 습 니 다(Locator 와 Name 을 동시에 갖 추고 있 습 니 다).URN 은 마치 한 사람의 이름 과 같 고 URL 은 한 사람의 주소 와 같다.다시 말 하면 URN 은 신분 을 확 정 했 고 URL 은 그것 을 찾 는 방법 을 제공 했다.
개념 이 명확 해 졌 죠?URI 는 웹 자원 을 표시 하 는 문자열 의 각 부분 을 지정 하 는 순수한 문법 구조 입 니 다.URL 은 URI 의 특례 로 웹 자원 을 찾 는 충분 한 정 보 를 포함 합 니 다.URI 는 통 일 된 자원 식별 자 이 고 URL 은 통 일 된 자원 포 지 셔 닝 문자 입 니 다.URL 은 URI 의 일종 입 니 다.예 를 들 어:http://www.itmind.net/。그러나 모든 URI 가 URL 은 아 닙 니 다.URI 는 자원 이름(URN,자원 이름 을 지 었 지만 자원 을 어떻게 찾 는 지 지정 하지 않 음)을 포함 할 수 있 기 때 문 입 니 다.예 를 들 어 mailto:[email protected]
이렇게 많아

URL url = new URL("http://www.itmind.net/category/payment-selection/zhishixingqiu-jingxuan/");

System.out.println("host: " + url.getHost());
System.out.println("port: " + url.getPort());
System.out.println("uri_path: " + url.getPath());

//   
// host: www.itmind.net
// port: -1
// uri_path: /category/payment-selection/zhishixingqiu-jingxuan/
1)java.net.URL 대상 을 만 드 는 방법 은 매우 간단 합 니 다.코드 한 줄 만 필요 합 니 다.

URL url = new URL(URL  );
URL 대상 은 가 변 적 이지 않 습 니 다.URL 류 는 final 형식 이기 때문에 이러한 장점 은'스 레 드 안전'을 보장 하 는 것 입 니 다.
2)자바.net.URL 대상 이 있 으 면 URL 과 관련 된 호스트 이름,포트,경로 등 을 가 져 올 수 있 습 니 다.

url.getHost()
url.getPort()
url.getPath()
02、URLConnection 이란 무엇 인가
URLConnection 은 추상 적 인 클래스 로 응용 프로그램 과 URL 간 의 통신 링크 를 대표 합 니 다.이 URL 에서 인 용 된 자원 을 읽 고 기록 하 는 데 사용 할 수 있 습 니 다.이 종 류 는 Socket 류 보다 사용 하기 쉽 고 고 급 스 러 운 네트워크 연결 추상 화 를 제공 합 니 다.
URLConnection 대상 을 어떻게 가 져 옵 니까?URL 대상 의 openConnection()방법 을 통 해 예 시 는 다음 과 같다.

URL url = new URL("http://www.itmind.net");
URLConnection connection = url.openConnection();
URL 프로 토 콜 이 HTTP 라면 URLConnection 으로 연 결 된 하위 클래스 HttpURLConnection 을 되 돌려 줍 니 다.
URLConnection 대상 이 있 으 면 getInputStream()을 통 해 인 용 된 자원 데 이 터 를 읽 을 수 있 습 니 다.(ASCII 텍스트 를 읽 으 면 ASCII 입 니 다.HTML 파일 을 읽 으 면 원본 HTML 이 고,그림 파일 을 읽 으 면 바 이 너 리 그림 데이터 등 입 니 다).
소 백 학당 홈 페이지 의 내용 을 읽 어 보 겠 습 니 다.코드 예 시 는 다음 과 같 습 니 다.

URL url = new URL("http://www.itmind.net");
URLConnection connection = url.openConnection();

try (InputStream in = connection.getInputStream();) {

 ByteArrayOutputStream output = new ByteArrayOutputStream();
 byte[] buffer = new byte[1024];
 int len = -1;
 while ((len = in.read(buffer)) != -1) {
 output.write(buffer, 0, len);
 }

 System.out.println(new String(output.toByteArray()));

} catch (IOException e) {
 e.printStackTrace();
}

try-with-resource 를 사용 하여 InputStream 을 가 져 올 수 있 습 니 다.이 종 류 는 AutoCloseable 인 터 페 이 스 를 실현 하고 내용 읽 기 가 끝 난 후에 입력 흐름 을 자동 으로 닫 을 수 있 습 니 다.
인쇄 된 내용 은 다음 그림 과 같 습 니 다(부분).
 
만약 당신 이 어떤 URL 의 내용 을 읽 고 싶다 면,상술 한 방법 은 좋 은 방안 입 니 다.어서 가서 시험 해 보 세 요!
03.URL 과 URLConnection 의 차이
URL 과 URLConnection 의 가장 큰 차이 점 은:
  • URLConnection 은 HTTP 머리 에 대한 접근 을 제공 합 니 다
  • URLConnection 은 특정한 URL 에 보 낼 요청 인 자 를 설정 할 수 있 습 니 다
  • URLConnection 은 URL 위치 에 있 는 자원 을 읽 을 수 있 을 뿐만 아니 라 데 이 터 를 기록 할 수 있 습 니 다
  • HTTP 헤드 를 가 져 오 는 방법 은 다음 과 같 습 니 다.
  • getContentType 은 Content-type 헤드 필드 의 값,즉 데이터 의 MIME 내용 형식 을 되 돌려 줍 니 다.형식 을 사용 할 수 없 으 면 null 로 돌아 갑 니 다.내용 형식 이 텍스트 라면 Content-type 의 첫 번 째 부분 은 표지 내용 인 코딩 방식 의 문자 집합 을 포함 할 수 있 습 니 다.예 를 들 어 Content-type:text/html;charset=UTF-8
  • getContentLength()는 Content-length 헤드 필드 의 값,즉 내용 의 바이트 수 를 되 돌려 줍 니 다
  • getContentEncoding()은 Content-encoding 헤드 필드 의 값,즉 내용 의 인 코딩 방식(문자 인 코딩 방식 과 다 름)을 되 돌려 줍 니 다.예 를 들 어 x-gzip
  • getDate(),date 헤드 필드 의 값,즉 요청 한 발송 시간 을 되 돌려 줍 니 다
  • getExpiration(),expires(만 료 시간)헤드 필드 의 값 을 되 돌려 줍 니 다.0 으로 돌아 가면 만 료 되 지 않 고 영원히 캐 시 됩 니 다
  • getLastModified(),last-modified(마지막 수정 날짜)헤더 필드 의 값 을 되 돌려 줍 니 다
  • 코드 예 시 는 다음 과 같다.
    
    URL url = new URL("http://www.itmind.net");
    URLConnection connection = url.openConnection();
    System.out.println(connection.getContentType());
    System.out.println(connection.getContentLength());
    System.out.println(connection.getContentEncoding());
    System.out.println(connection.getDate());
    System.out.println(connection.getExpiration());
    System.out.println(connection.getLastModified());
    
    //   
    // text/html; charset=UTF-8
    // -1
    // null
    // 1566886980000
    // 0
    // 0
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기