28. Network

sumin·2023년 8월 5일
0

아카데미

목록 보기
28/82
post-thumbnail

URL

URL

  1. Uniform Resource Location
  2. 정형화된 자원의 결로 표기방법(웹 주소를 의미한다.)
  3. 형식
    프로토콜 :// 호스트 :포트/URLMapping ? 파라미터 = 값& 파라미터 = 값&파라미터 = .....

    https://search.naver.com:8080/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=폭염

    1) 프로토콜 : 통신규약, http(secure + http : 보안처리된 하이퍼텍스트 전송 프로토콜)
    2) 호스트 : 서버주소
    3) URLMapping : 서버경로
    4) 파라미터 : 서버로 보내는 데이터

java.net.URL 클래스

  1. URL을 관리하는 클래스이다.
  2. URL을 분석하여 원하는 정보를 얻어낼 수 있다.
  3. URL에 접속할 수 있는 URLConnection을 생성할 수 있다.

URL 정보 분석

    //URL 정보 분석하기
    String apiURL = "https://search.naver.com:8080/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=폭염";
    
    //URL객체 선언
    URL url = null;
    
    try{
      //URL 객체 생성
      url = new URL(apiURL); //MalformedURLException 발생
      
      //URL 분석
      System.out.println("프로토콜: " + url.getProtocol());
      System.out.println("호스트: " + url.getHost());
      System.out.println("파라미터: " + url.getQuery());
      System.out.println("포트번호: " + url.getPort());
    } catch(MalformedURLException e) {
      System.out.println("api");  
    }    

접속확인 & 접속 정보확인

  //접속할 주소
    String spec = "https://ssl.pstatic.net/melona/libs/1456/1456783/4d810ba34087b36d78b5_20230803154347427.jpg";
    
    //URL객체 선언
    URL url = null;
    
    // HttpURLConnection 객체 선언
    HttpURLConnection con =null;
    
    try {
      
      //URL 객체 생성 (MalformedURLException 발생)
      url = new URL(spec);
      
      // HttpURLConnection 객체 생성(IOException 발생)
      con = (HttpURLConnection)url.openConnection();
      
      /*
       * HTTP 응답코드
       * 1. 200 : 정상
       * 2. 4XX : 잘못된 요청(클라이언트의 잘못된 요청)
       * 3. 5XX : 서버오류(개발을 잘못하였음)
       */
      
      //접속 여부 확인
      int respondseCode = con.getResponseCode();
      System.out.println("접속여부: " + (respondseCode == HttpURLConnection.HTTP_OK));
      
      // 요청 헤더(User-Agent) : 무엇으로 접속했는가?
      String userAgent = con.getRequestProperty("User-Agent");
      System.out.println("User-Agent: " + userAgent);
      
      // 요청 헤더(Referer) : 이전 주소가 무엇인가?
      String referer = con.getRequestProperty("Referer");
      System.out.println("Referer: " + referer);
      
      // 요청 헤더(Content_Type) : 어떤 타입인가?
      String contentType = con.getContentType();
      System.out.println("Content-Type: " + contentType);
      
      // 컨텐트 크기 : 크기가 얼마인가?
      int contentLength = con.getContentLength();
      System.out.println("Content-Length: " + contentLength);
      
      /*
       * 요청 메소드 
       * 1. GET : 주소(URL)를 이용한 데이터 전송방식
       * 2. POST :본문(BODY)을 이용한 데이터 전송
       */
      
      // 요청 메소드 : 어떤 방식으로 요청했는가? 
      String requestMethod = con.getRequestMethod();
      System.out.println("RequestMethod: " + requestMethod);
      
      //접속해제 
      con.disconnect();
      
    } catch(MalformedURLException e) {
      System.out.println("접속 주소 오류");
    } catch(IOException e) {
      System.out.println("접속 오류");
    }

인코딩Endording

Encoding : 원본 데이터를 암호화 하는 것
사람이 인지할 수 있는 문자응 약속된 규칙에 따라 컴퓨터가 이해하는 언어(0과 1)로 바꾸는 것을 통틀어서 일컫는다. 인코딩능 하는 이유는 정보의 형태 표준화, 보안, 저장 공간 절약 등을 위해서 이다. 문자인코딩 사진&오디오&비디오 인코딩으로 나누어진다.

디코딩 Decording

Decoding : 암호화된 데이터를 원본 데이터로 복호화하는 것
인코딩의 반대되는 개면으로 복호화, 역코드화의 의미를 가지고 있다. 저장공간의 효율화, 보안 등의 이유로 인코딩한 데이커를 다시 디코딩을 해서 사용할 수 있다. 어떠한 특정방법으로 인코딩한 데이터를 동일한 방법으로 디코딩을 해주면 데이터를 읽어올 수 있다.

인코딩-디코딩-인코딩-디코딩... 이런 순환 구조를 가지고 있다.

try {
      //원본 데이터 
      String originData = "홍길동 tom 12345 !@#$%^^&&*()_";
      System.out.println("원본: " + originData);
      
      // Encoding(암호화)
      String encodeData = URLEncoder.encode(originData, "UTF-8"); //UnsupportedEncoding 발생
      System.out.println("암호: " + encodeData);
      
      // Decoding(복호화)
      String decodeData = URLDecoder.decode(encodeData, "UTF_8");// UnsupportedEncoding 발생
      System.out.println("복호: " + decodeData);
      
    } catch(UnsupportedEncodingException e) {
      System.out.println("인코딩 오류");
    }
profile
백엔드 준비생의 막 블로그

0개의 댓글