zoukankan      html  css  js  c++  java
  • 所有HTTP请求参数及报文查看SERVLET【原】

    HttpRequestServlet.java

    说明:

    用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来.

    package king.server;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLDecoder;
    import java.util.Date;
    import java.util.Enumeration;
    import java.util.List;
    import java.util.Map;
    import java.util.UUID;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来
     * @author King
     *
     */
    public class HttpRequestServlet  extends HttpServlet{
        @Override
        public void doGet(HttpServletRequest request, HttpServletResponse response) {
            try {
                request.setCharacterEncoding("UTF-8");
                response.setCharacterEncoding("UTF-8");
                System.err.println("我是服务器,通过request.getParameter()获取的参数:");
                StringBuilder paramSB = new StringBuilder();
                Enumeration<?> paramNames=request.getParameterNames();
                while(paramNames.hasMoreElements()){
                    String name=(String)paramNames.nextElement();
                    String valueNotDecode=request.getParameter(name);
                    String valueDecode=new String(valueNotDecode.getBytes("UTF-8"),"UTF-8");
                    paramSB.append(name + "==" + valueDecode+"
    ");
                }
                System.out.println("我是服务器,通过param读取的参数如下:
    "+paramSB.toString());
                PrintWriter writer = response.getWriter();  
                writer.write("通过param读取的参数如下:
    "+paramSB.toString());  
                writer.flush();  
                writer.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        @Override
        public void doPost(HttpServletRequest request, HttpServletResponse response) {
            try {
                request.setCharacterEncoding("UTF-8");
                response.setCharacterEncoding("UTF-8");
    //            如果"您的文本内容" 用UTF-8编码后,再以conn.setRequestProperty("content-type", "text/xml;charset=iso-8859-1");发送到本服务端,那么需要对参数内容进行如下解码
    //            String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8");
    //            System.out.println("name : "+ name);
            
                System.err.println("我是服务器,通过request.getParameter()获取的参数:");
                StringBuilder paramSB = new StringBuilder();
                Enumeration<?> paramNames=request.getParameterNames();
                while(paramNames.hasMoreElements()){
                    String name=(String)paramNames.nextElement();
                    String valueNotDecode=request.getParameter(name);
                    String valueDecode=new String(valueNotDecode.getBytes("iso-8859-1"),"UTF-8");
                    System.out.println(name + "==" + valueDecode);
                    paramSB.append(name + "==" + valueDecode+"
    ");
                }
                
                //使用apache的httpcomponents 的post请求时:formparams.add(new BasicNameValuePair("key","value"));  也只能从这里获取到!
                BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8")); 
                String line = null;
                StringBuilder streamSB = new StringBuilder();
                while ((line = br.readLine()) != null) {
                    streamSB.append(line);
                }
                String decode = URLDecoder.decode(streamSB.toString(), "UTF-8");
                System.out.println("我是服务器,通过request.getInputStream()读取的参数:
    " + decode);
                
                response.setCharacterEncoding("UTF-8");//第一优先级高于第二优先级,只能用来设置out输出流中所采用的编码
    //            response.setContentType("text/html;charset=UTF-8");//第二优先级,不仅能用来设置out输出流中所采用的编码,也可以设置浏览器接收到这些字符后以什么编码方式来解码
                PrintWriter writer = response.getWriter();  
                writer.write("通过param读取的参数如下:
    "+paramSB.toString());  
                writer.write("通过stream读取的参数如下:
    "+decode);  
                writer.flush(); 
                writer.close();    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 客户端通过conn.setRequestProperty(key,value),
         * 即可在服务端通过request.getHeader(key)获取到对应的head协议头值
         * @param request
         * @param response
         * @throws Exception
         */
        public void tip(HttpServletRequest request, HttpServletResponse response) throws Exception{
            //在客户端用
            HttpURLConnection conn = (HttpURLConnection) new URL("http://localhost:8080/httpserver").openConnection();
            conn.setRequestProperty("Accept", "application/soap+xml, application/dime, multipart/related, text/*");
            //就能在本服务端用
            request.getHeader("Accept");//获取到Head协议头中的值.
        }
    }
  • 相关阅读:
    php第九节课
    php第八节课
    php第七节课
    php第六讲
    php第五节课
    php第四节课
    php第三节课
    Golang Slice切片
    Golang 反射
    Golang 流程控制
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/5672943.html
Copyright © 2011-2022 走看看