레이블이 XML인 게시물을 표시합니다. 모든 게시물 표시
레이블이 XML인 게시물을 표시합니다. 모든 게시물 표시

2010년 3월 29일 월요일

Http Post 방식으로 header 설정 및 xml 데이터 전송

http post 방식으로 header를 설정한 후 xml 데이터를 서버에 전달 후

그 결과를 받는다.

첨부된 파일을 압축을 풀면 lib 디렉토리 안의 jar 파일들을

%CATALINA_HOME%\common\lib 에 위치시키거나

CALSSPASS를 잡아준 후 이용하면 된다.


<%@ page import="org.apache.commons.httpclient.HttpClient" %>
<%@ page import="org.apache.commons.httpclient.methods.PostMethod" %>
<%@ page import ="java.net.*" %>
<%@ page import ="java.io.*" %>

<%

    String orgMsg="abcdefg";
    String encMsg = null;
    String header1 = "header1";
    String header2 = "header2";
    String header3 = "header3";
    String ContentsType="text/xml";
    

    AES256 aes = new AES256();
    encMsg = aes.encrypt(msg);

      String xmldata = "<? xml version=\"1.0\" encoding=\"euc-kr\"?> "
                            +"<! DOCTYPE lgtpims:schema>"
                            +"<schema targetns=\"http://www.aaa.com\""
                    +"version=\"1.0\" xmlns=\"http://www.w3.org/2000/10/XMLSchema\">"
                        +"<parameter method=\"add\">"
                            +"<element-value name=\"addelement\">aaaaa</element-value>"
                            +"<element-value name=\"addelementtype\">bbbbb</element-value>"
                        +"</parameter>"
                    +"</schema>" ;

        String strURL = "http://www.aaa.com/aaa";
        PostMethod post = new PostMethod(strURL);
        post.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");
        post.setRequestHeader("header1","header1");
        post.setRequestHeader("header2",header2);
        post.setRequestHeader("header3",header3");
        post.setRequestHeader("Content-Length",Integer.toString(xmldata.length()));
        post.setRequestBody(xmldata);

        HttpClient httpclient = new HttpClient();            

        try {
            int result = httpclient.executeMethod(post);
            // Display status code
            out.println("<br>Response status code: " + result);
            // Display response
             out.println("<br>Response header: "+post.getResponseHeader("Status-Line"));
            out.println("<br>Response body: ");
            out.println(post.getResponseBodyAsString());
        } finally {
            // Release current connection to the connection pool once you are done
            post.releaseConnection();
        }


%>

2010년 3월 18일 목요일

AJAX이용한 XML 데이터 전송 및 전송된 XML 데이터 받기

1.xmlPostClient.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<script type="text/javascript">
    var xmlHttp;
    function createXMLHttpRequest(){
        if(window.ActiveXObject){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }else if(window.XMLHttpRequest){
            xmlHttp=new XMLHttpRequest();
        }
    }
    function sendXML(){
        createXMLHttpRequest();

        var xml="<VCOUPON><TEL_NO>0101234567</TEL_NO><AMOUNT>1000</AMOUNT><RETURNCODE>00</RETURNCODE></VCOUPON>";
        var url="http://localhost:8080/test/httpPostServer.jsp";
        xmlHttp.open("POST",url,true);
        xmlHttp.onreadystatechange=handleStateChange;
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
        xmlHttp.setRequestHeader("aaa","aaa");
        xmlHttp.setRequestHeader("bbb","bbb");
        xmlHttp.send(xml);
    }

    function handleStateChange(){
        if(xmlHttp.readyState==4){
            if(xmlHttp.status==200){
                parseResults();
            }
        }
    }

    function parseResults(){
        var responseDiv=document.getElementById("response");
        if(responseDiv.hasChildNodes()){
            responseDiv.removeChild(responseDiv.childNodex[0]);
        }
        var responseText = document.createTextNode(xmlHttp.responseText);
        responseDiv.appendChild(responseText);
    }
</script>
</head>
<body>
<input type="button" value="보내기" onClick="sendXML();"><br>
<div id="response">

</div>
</body>
</html>

2.xmlPostServer.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import = "java.io.*" %>
<%@ page import = "javax.xml.parsers.DocumentBuilderFactory" %>
<%@ page import = "javax.xml.parsers.ParserConfigurationException" %>
<%@ page import = "org.w3c.dom.Document" %>
<%@ page import = "org.w3c.dom.NodeList" %>
<%@ page import = "org.xml.sax.SAXException" %>

<%!
    public String readXMLFromRequestBody(HttpServletRequest request){
        StringBuffer xml = new StringBuffer();
        String line = null;
        try{
            BufferedReader reader = request.getReader();
            while((line=reader.readLine())!=null){
                xml.append(line);
            }
        }catch(Exception e){
            System.out.println("Error reading XML:"+e.toString());
        }
        return xml.toString();
    }
%>
<%
    String xml=readXMLFromRequestBody(request);
    Document xmlDoc = null;
    try{
        xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(xml.getBytes()));
    }catch(ParserConfigurationException e){
        System.out.println("ParserConfigurationException : "+e);
    }catch(SAXException e){
        System.out.println("SAXException : "+e);
    }
    System.out.println("header aaa : "+request.getHeader("aaa"));
    System.out.println("header bbb : "+request.getHeader("bbb"));
    NodeList TEL_NO = xmlDoc.getElementsByTagName("TEL_NO");
    NodeList AMOUNT = xmlDoc.getElementsByTagName("AMOUNT");
    NodeList RETURNCODE = xmlDoc.getElementsByTagName("RETURNCODE");
    String telno = null;
    String amount = null;
    String returncode = null;
    String responseText = "request text : ";
    for(int i = 0; i < TEL_NO.getLength();i++){
        telno = TEL_NO.item(i).getFirstChild().getNodeValue();
        responseText = responseText+"TEL_NO : "+telno;
    }
    for(int i = 0; i < AMOUNT.getLength();i++){
        amount = AMOUNT.item(i).getFirstChild().getNodeValue();
        responseText = responseText+"AMOUNT : "+amount;
    }
    for(int i = 0; i < RETURNCODE.getLength();i++){
        returncode = RETURNCODE.item(i).getFirstChild().getNodeValue();
        responseText = responseText+"RETURNCODE : "+returncode;
    }   
   
    response.setContentType("text/xml");
    out.print(responseText);
%>