soapreceiver.java

来自「一个简单的接收xml的程序」· Java 代码 · 共 92 行

JAVA
92
字号

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.*;

import java.io.FileInputStream;
import javax.xml.transform.stream.StreamSource;

import javax.xml.messaging.URLEndpoint;

import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.Source;

import javax.xml.transform.stream.StreamResult;


public class SoapReceiver extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=GBK";
    //Initialize global variables
    public void init() throws ServletException {
    }
    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        MimeHeaders mimeHeaders = new MimeHeaders();
        Enumeration en = request.getHeaderNames();
        while ( en.hasMoreElements() ) {
            String headerName = ( String ) en.nextElement();
            String headerVal = request.getHeader( headerName );
            System.out.println( headerName + ":" + headerVal );
            StringTokenizer tk = new StringTokenizer( headerVal, "," );
            while ( tk.hasMoreTokens() ) {
                mimeHeaders.addHeader( headerName, tk.nextToken().trim() );
            }
        }
        try {

            MessageFactory messageFactory = MessageFactory.newInstance();
            SOAPMessage message =
                messageFactory.createMessage( mimeHeaders, request.getInputStream() );
            message.writeTo( System.out );

            SOAPMessage reply = messageFactory.createMessage();
            SOAPPart soapPart = reply.getSOAPPart();
            SOAPEnvelope envelope = soapPart.getEnvelope();
            SOAPHeader header = envelope.getHeader();
            header.detachNode();
            SOAPBody replyBody = envelope.getBody();
            SOAPFactory soapFactory = SOAPFactory.newInstance();
            SOAPBodyElement bodyElement = replyBody.addBodyElement(
                soapFactory.createName( "ack" ) );
            bodyElement.addTextNode( "OK" );

            response.setContentType( CONTENT_TYPE );
            response.setHeader( "Content-Type", "text/xml" );

            OutputStream os = response.getOutputStream();
            reply.writeTo( os );
            os.flush();
        } catch ( IOException ex ) {
            ex.printStackTrace();
        } catch ( SOAPException ex ) {
            ex.printStackTrace();
        }

    }
    //Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
    //Process the HTTP Put request
    public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    //Process the HTTP Delete request
    public void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    //Clean up resources
    public void destroy() {
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?