본문 바로가기
프로그램/자바

자바로 크로스 도메인 우회처리

by cbwstar 2021. 12. 14.
728x90
반응형
/**
	 * 크로스 도메인 우회처리
	 * @param map
	 * @return
	 */
	
	public static String processHTTP(Map<String,String> params ) throws Exception
    {    
        
        int statusCode = 0;
        
        String url= params.get("url");
        
        logger.debug("url : " + url);
        
        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
        HttpPost httpPost = new HttpPost(url);                
        List<NameValuePair> nvps = makeParams(params);
        
        try {
            httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded; text/html; charset=UTF-8");
            httpPost.setHeader("Cache-Control", "no-cache");
            
            // 한글 인코딩을 위하여 인코딩 정보를 설정한다.
            httpPost.setEntity(new UrlEncodedFormEntity(nvps, DEFAULT_ENCODING));
            
            CloseableHttpResponse response = httpclient.execute(httpPost);
            statusCode = response.getStatusLine().getStatusCode();
            
            logger.debug("\nSending 'POST' request to URL : " + httpPost.getURI());            
            logger.debug("Post parameters : " + httpPost.getEntity().toString());
            logger.debug("Response Code : " + statusCode );            
 
            if( statusCode == 200){        
                // 정상인 경우 메시지를 읽어 들여 그 결과를 리턴한다. 
                BufferedReader rd = new BufferedReader( new InputStreamReader(response.getEntity().getContent()));
                StringBuffer result = new StringBuffer();
                String line = "";
                while ((line = rd.readLine()) != null) {
                    result.append(line);
                }    
                return result.toString();                
            }
            
        } catch (Throwable e) {
            throw new HttpException((new StringBuilder("오류가 발생하였습니다.")).append(statusCode).toString());    
        }        
 
        if( statusCode != 200)
        {        
            throw new HttpException((new StringBuilder("오류가 발생하였습니다.")).append(statusCode).toString());                
        }
        
        return "";
        
    }
 
    public static List<NameValuePair> makeParams(Map<String,String> params) throws Exception {
        int hashSize = params.size();
        Iterator keyset = params.keySet().iterator();        
        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        for (int i = 0; i < hashSize; i++) {            
            String key = (String) keyset.next();
            if(!key.equals("DataSetRowType") && !key.equals("url")) {
            	nvps.add(new BasicNameValuePair(key, EgovStringUtil.nvl(params.get(key)) ));	
            }
        }
        
        return nvps;
    }
728x90
반응형

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading