public String getMcodeFromMLB() {
        HttpURLConnection uc = null; // 연결용 커넥션
        URL url = null;
        String sUrl = "http://localhost:8080/MLBServerTest/MLBTest.jsp"; // 연결할 주소
        String result = "";
       
        try {
           
            url = new URL(sUrl);
           
            uc = (HttpURLConnection) url.openConnection();
           
            uc.setDoInput(true);
            uc.setDoOutput(true);
            uc.setUseCaches(false);
            uc.setRequestMethod("POST");
            uc.setConnectTimeout(10000);  // 커넥션 타임아웃
            uc.setAllowUserInteraction(true);
           
            // Http Header Setting
            uc.setRequestProperty("Content-type", "application/x-www-form-urlencoded;charset=euc-kr");
           
            // Http Parameter Sending
            String partner_id = "O00128";    // CP의 파트너ID
            String service_code = "001";    // 각 CP서버에 할당된 코드
            String music_code = "00293876";    // MLB에서 조회된 MUSIC_CODE
            String content_price = "800";     // 컨텐츠 단가
            String content_name = "핑계";     // 컨텐츠가 서비스되는 이름
            String content_num = "1";     // 패키지에 포함한 컨텐츠의 갯수. 단일상품일 경우 1, 복합상품일 경우 2이상
            String pid = "3102306023";     // PID
            String sub_code = "12700000012";     // CP서버가 자체적으로 관리하는 Code(SCID등). 12자리 이하
            String carrier_code = "00";     // ASP에 서비스하는 캐리어를 구분하기 위한 구분코드
           
            StringBuffer sb = new StringBuffer();
            sb.append(MLBConstants.MCODE_REQUEST_PARTNER_ID).append("=").append(partner_id).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_SERVICE_CODE).append("=").append(service_code).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_MUSIC_CODE).append("=").append(music_code).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_CONTENT_PRICE).append("=").append(content_price).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_CONTENT_NAME).append("=").append(content_name).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_CONTENT_NUM).append("=").append(content_num).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_PID).append("=").append(pid).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_SUB_CODE).append("=").append(sub_code).append("&");
            sb.append(MLBConstants.MCODE_REQUEST_CARRIER_CODE).append("=").append(carrier_code);
           
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(uc.getOutputStream(), "euc-kr"));
            pw.write(sb.toString());
            pw.flush();
           
           
            int resCode = 0; // RMS 와의 연결 응답값
            resCode = uc.getResponseCode();
           
            StringBuffer resp = new StringBuffer();
            if(resCode < 400){  // 연결이 성공적일때
               
                String line;
                BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream(), "euc-kr"));
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                    resp.append(line);
                }
               
                pw.close();
                br.close();
               
                // html 파싱
                result = getResultCode(resp.toString());
                result = (result.equals("OK")) ? result : "MLB연동 중 에러 발생 : " + getResultCode(resp.toString());
            }
            else{
                result = "MLB연동 중 에러 발생 : " + resCode + " 에러입니다.";
            }
           
        } catch (IOException e) {
            e.printStackTrace();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
       
        return result;
    }

넘기고 받을 때 euc-kr로 변환하는 것도 주목.

'프로그래밍 > Java' 카테고리의 다른 글

[java] thorws .....  (0) 2009.12.11
[java] 소스 분석  (0) 2009.09.06
[HttpURLConnection] HttpURLConnection 에서 GET / POST 방식 사용상의 주의  (0) 2009.02.19
CLASSPATH  (0) 2009.01.06
HttpURLConnection 사용례  (0) 2009.01.06
참고 : http://charmpa.egloos.com/1336665

        String RMS_URL = "http://localhost:8080/SMILE_RMS/rms/request_deploy";
        URL url = new URL(RMS_URL);
        HttpURLConnection uc = (HttpURLConnection) url.openConnection();
       
        uc.setDoInput(true);
        uc.setDoOutput(true);
        uc.setUseCaches(false);
        uc.setRequestMethod("POST");
       
        // Http Header
        String ver = "X-RMS-VER 1.0";
        String uid = "X-RMS-UID 1.0";
        String upw = "X-RMS-UPW 1.0";
        String tid = "X-RMS-TID " + System.currentTimeMillis();
        String length = msg.length()+"";
        uc.setRequestProperty("X-RMS-VER", ver);
        uc.setRequestProperty("X-RMS-UID", uid); // md5 encoded
        uc.setRequestProperty("X-RMS-UPW", upw); // md5 encoded
        uc.setRequestProperty("X-RMS-TID", tid);
        uc.setRequestProperty("Content-Length", length);
       
        // 보내기
        PrintWriter pw = new PrintWriter(uc.getOutputStream());
        pw.write(msg.toString());
        pw.flush();
        pw.close();
       
        // 받기
//        BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
//        String str = null;
//        while((str = br.readLine()) != null) {
//            System.out.println(str);
//        }
       
        // 실질적으로 웹서버에 접속하여 요청을 보내고 응답을 수신하는 시점은 con.getResponseCode();로 판단된다.
        // getResponseCode() 를 호출하지 않으면, Network Connection 연결 요청 자체가 시도되지 않음이 확인되었다..
        // 실제로 서버로부터 아무런 정보도 받지 않더라도(현재 InputStream처리부분은 주석임), request의 결과로
        // response가 어떤지(성공/실패 등)를 받지 않으면 서버에 아무것도 보내지 않는듯.
        // 결국 서버가 request에 대한 처리를 하고 response를 주기 전까지는 대기상태. 동기화되어서 작동.
//        OutputStream out = uc.getOutputStream();// internally change to 'POST'
        int resCode = uc.getResponseCode(); // connect, send http reuqest, receive htttp request
        System.out.println ("code = "+ resCode);

'프로그래밍 > Java' 카테고리의 다른 글

[java] 소스 분석  (0) 2009.09.06
[HttpURLConnection] POST로 파라미터 넘기기  (0) 2009.07.27
CLASSPATH  (0) 2009.01.06
HttpURLConnection 사용례  (0) 2009.01.06
[펌] HttpURLConnection 을 이용하세요  (0) 2009.01.02