728x90
반응형

[JAVA] URLConnection 사용해서 POST 방식으로 전송하기

StringBuilder/BufferedWriter/InputStream/BufferedReader/InputStreamReader  




 

 

  URL url = null;
  URLConnection urlconnection = null;
    
        try
        {
         //URL 주소
         String domain =http://aaa.aaa.aaa/;
         String route = "/bbb/ccc";
      
            url = new URL((new StringBuilder()).append(domain).append(route).toString());
            // StringBuilder : 문자열 변경이 쉬운 StringBuilder 클래스를 사용,
            //                      StringBuilder 개체는 문자열의 확장을 수용하기 위해 버퍼를 유지, 관리
           
            urlconnection = url.openConnection();

            // 해당 URL에서 페이지 정보를 가져옴
            
            ((HttpURLConnection)urlconnection).setRequestMethod("POST");           
            // Post방식 : 스트림을 통해서 파라미터 전송,
            // 서버로 데이터를 전송할 수 있도록 한다.

            //​ get방식이면 사용될 일이 없으나, true로 설정하면 자동으로 Post로 설정, 기본값은 false;            
            
            
            urlconnection.setDoOutput(true);  // 출력 스트림 사용 여부
            urlconnection.setDoInput(true);  // 입력 스트림 사용 여부
            urlconnection.setUseCaches(false);  // 캐시에 저장된 결과가 아닌 동적으로 그 순간에 생성된 결과를 읽도록,
                     //파라미터를 전송하는 경우 대부분 웹 페이지의 결과가 그 순간 순간 파라미터의 값에 따라 달라지기 때문.
           
            urlconnection.setRequestProperty("Content-Type", "text/json");
                       
            urlconnection.connect();
           
           
            BufferedWriter bufferedwriter  = new BufferedWriter(

                                                                         new OutputStreamWriter(urlconnection.getOutputStream(), "ISO-8859-1"));
            //urlconnection.getOutputStream(): 해당 URL에 대한 출력 스트림을 구함.
            //OutputStreamWriter(스트림,인코딩) : 문자 스트림에서 바이트 스트림으로 변환
                       
            bufferedwriter.write(datas);
            bufferedwriter.flush();
           
           
            InputStream inputstream = urlconnection.getInputStream();
                       
            BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(inputstream, "ISO-8859-1"));
           
            String result = bufferedreader.readLine();
           
            inputstream.close();
           
            bufferedreader.close();
            bufferedwriter.close();
           
           
            /*
             * Stream : 일반적으로 데이터,패킷,비트 등의 일련의 연속성을 갖는 흐름을 의미
             *
             * BufferedReader / BufferedWriter
             * 문자 입력 스트림으로부터 문자를 읽어 들이거나 문자 출력 스트림으로 문자를 내보낼 때

             * 버퍼링을 함으로써 문자, 문자 배열, 문자열 라인 등을 보다 효율적으로 처리할 수 있도록 해준다.
             *
             * InputStreamReader / OutputStreamWriter
             * 바이트 스트림에서 문자 스트림으로, 문자 스트림에서 바이트 스트림으로 변환을 제공하는 입출력 스트림,
             *  사용하는 경우는 한 문자씩 읽지만

             * 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적으로 입출력할 수 있다.
             * 
             * BufferedReader / BufferedWriter는 BufferedInputStream / BufferedOutputStream과 기능이 비슷하지만,
             * BufferedInputStream / BufferedOutputStream은 바이트 단위의 처리,
             * BufferedReader / BufferedWriter는 문자(Char) 단위 처리라는 차이가 있다.
             */


 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,