ABOUT ME

Today
Yesterday
Total
  • [자바] URLConnection, HTTPURLConnection
    자바 2023. 4. 22. 16:52

    api 호출하는 코드를 짜면서 URLConnection / HTTPURLConnection 사용을 했다

    문제는 " connection 시작 > api 호출 > connection 끝 " 이 과정에서 api 호출을 여러 번 하고 싶었다

    그래서 URLConnection / HTTPURLConnection에 대해 더 찾아봤고 해결책은 다른 방법이었지만... 뭐...

     

    결론은 불가능하다. 한 번 호출에 connection을 계속 열고 닫아야 한다

    The specification for java.net.HttpURLConnection propertly documents that the URLConnection can only be used to make a single request : "Each HttpURLConnection instance is used to make a single request but the underlying network connection to the HTTP server may be transparently shared by other instances."

     

     


     

     

    URLConnection은 java 애플리케이션과 url 간의 연결 관련한 모든 클래스의 슈퍼클래스

    - URLConnection의 클래스는 일반적인 URL에 대한 API 제공

    - 서브클래스 HttpURLConnection은 HTTP 고유 기능에 대한 추가 지원 제공

     

    두 개 모두 추상 클래스

    > 새 인스턴스를 직접 만들 수 없고 URL 객체에 연결을 통해 URLConnection의 인스턴스를 얻는다.

     

    1. 객체 생성

    2. URL에서 URLConnection 객체 얻기 (openConnection)

    3. URLConnection 구성

        > 클라이언트와 서버 간 다양한 옵션을 설정할 수 있다

        > setDoOutput : URLConnection을 서버에 데이터를 보내는 데 사용할 수 있는지 여부 설정

        > setRequestProperty : key-value 쌍으로 지정된 일반 요청 속성을 설정한다.

    4, 헤더 필드 읽기

        > 연결이 이루어지면 서버는 URL 요청을 처리하고 메타데이터와 실제 콘텐츠로 구성된 응답을 다시 보낸다.

        > 메타 데이터는 헤더 필드라고 하는 키=값 쌍의 모음

        > 헤더 필드는 서버에 대한 정보, 상태 코드, 프로토콜 정보 등을 나타낸다

    5. 입력 스트림 가져오기 및 데이터 읽기

        > inputStram 인스턴스를 얻은 다음 read() 메서드로 읽기

        > 데이터를 문자열로 읽기 위해 inputStream을 BufferedReader 매핑

    6. 출력 스트림 가져오기 및 데이터 쓰기

        > 서버에 데이터를 보내려면 먼저 연결에서 출력을 활성화해야 한다.

        > outputstream 객체를 가져온 다음 outputStram의 write() 메서드를 이용해 데이터를 쓰기

    7. 연결 종료

        > close() 메서드 호출

     

     

    (참고)

    https://blueyikim.tistory.com/2199

     

     


     

     

    cf. 슈퍼클래스

    상속 : 이미 존재하는 클래스로부터 멤버들을 물려받는 것

    상속되는 클래스를 부모클래스, 슈퍼클래스(Super Class)라고 한다

    상속받는 클래스를 자식클래스, 서브클래스(Sub Class)라고 한다

     

     

    (참고) https://enter.tistory.com/108

     

     

    cf. 추상클래스

    객체를 직접 생성할 수 있는 클래스를 실체클래스라고 하는데, 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상클래스라고 한다.

    - 추상클래스는 실체클래스의 공통적인 부분(변수, 메서드)을 추출해서 선언한 클래스

    - 추상클래스는 객체를 선언할 수 없다. 아직 실체성이 없고 구체적이지 않기 때문에

    - 추상클래스와 실체클래스는 상속관계이다

     

     

    (참고) https://limkydev.tistory.com/188 

     

     


     

     

    참고한 포스팅들이 모두 설명이 잘 되어있어 두고두고 볼 것

    728x90
Designed by Tistory.