헤르메스 LIFE

HttpURLConnection 이용시 헤더값 세팅 방법 본문

Core Java

HttpURLConnection 이용시 헤더값 세팅 방법

헤르메스의날개 2020. 12. 17. 00:07
728x90

출처 : http://blog.naver.com/hazard11?Redirect=Log&logNo=80028745174

 

HttpURLConnection으로 특정 주소에 접근하는 경우를 종종 볼수 있습니다.

 

해당 웹서버/WAS 에서 요청헤더의 특정 값이 필요한 경우, 이를 세팅해주어야하며,

응답헤더에서 내려오는 특정 값이 필요한 경우, 해당 값을 가져와야합니다..

 

        final public static String PUT = "Cookie";
        final public static String GET = "Set-Cookie";

 

        public static void main(String[] args) {

                HttpURLConnection con = null;
                String line = null;
                String cookie = "1234567890";
                try {
                        URL u = new URL("http://www.google.co.kr");

                        // request
                        HttpURLConnection huc = (HttpURLConnection) u.openConnection();
                        huc.setRequestMethod("GET");
                        huc.setRequestProperty(PUT, cookie);

                        System.out.println("request header setting:" + huc.getRequestProperty(PUT));

                        huc.connect();

                        // response
                        InputStream is = huc.getInputStream();
                        BufferedReader in = new BufferedReader(new InputStreamReader(is));

                        Map m = huc.getHeaderFields();
                        if(m.containsKey(GET)) {
                                Collection c =(Collection)m.get(GET);
                                for(Iterator i = c.iterator(); i.hasNext(); ) {
                                        cookie = (String)i.next();
                                }

                                System.out.println("server response cookie:" + cookie);
                        }
                        /*
                        while(true) {
                                line = in.readLine();
                                if(line==null) break;
                                System.out.println("line:" + line);
                        }*/
                } catch(Exception e) {
                        System.out.println("Exception...");
                        e.printStackTrace();
                } finally {

                }

        }

 

위의 코드는 특정 사이트로 접속을 하여 요청헤더에 Cookie의 키로 "1234567890"을 전달하고,

응답헤더에서 Set-Cookie의 키의 값을 가져오는 예제가 되겠습니다.

 

헤더세팅:

HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestProperty("Cookie", "1234567890");

 

헤더값접근:

HttpURLConnection huc = (HttpURLConnection) u.openConnection();

Map m = huc.getHeaderFields();

 if(m.containsKey("Set-Cookie")) {
        Collection c =(Collection)m.get("Set-Cookie");
        for(Iterator i = c.iterator(); i.hasNext(); ) {
              cookie = (String)i.next();
        }

        System.out.println("server response cookie:" + cookie);
}

 

헤더값 접근시 유의점으로는 HttpURLConnection 개체의 getHeaderFields() 함수를 통해서 헤더값 전체가 Map으로 리턴이 됩니다. 이 Map 개체의 get 함수를 통해서 가져오는 데이터가 String이 아니라, Collection 개체라는 겁니다..

 

1) Map 획득

2) Map에서 get 함수를 통해서 Collection 개체 획득

2) Collection 개체에서 Iterator를 통해서 전체 루프를 돌면서 해당 값을 획득(여기에서야 드디어 String 이죠)

 

전혀 어렵지 않죠...

 

많은 도움이 되었으면 합니다..

728x90

'Core Java' 카테고리의 다른 글

jxl의 사용  (0) 2020.12.17
JDBC 버전확인  (0) 2020.12.17
[오픈소스] DBConnectionManager.java  (0) 2020.12.17
[날짜] LocalDate, Calendar, Date 날짜 가져오는 방법  (0) 2020.12.15
How to Validate XML using Java  (0) 2016.04.04