zoukankan      html  css  js  c++  java
  • 简易JAVA_WEB服务器处理POST请求得到内容

    package com.zhao.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.URLDecoder;
    
    /**
     * 
     * @author
     * 
     */
    public class Sample_IIS {
        public static void main(String[] args) {
            startServer(9000);
        }
    
        private static void startServer(int port) {
            System.out.println("======>startServer");
            try {
                ServerSocket server = new ServerSocket(port);
                server.setSoTimeout(0);
                Socket socket = null;
                while ((socket = server.accept()) != null) {
                    socket.setSoTimeout(2000);
                    byte[] buffer = new byte[2048];
                    InputStream is = socket.getInputStream();
                    int len = is.read(buffer);
                    getContent(buffer, len);
                    responseText(socket,
                            "{"cmd":"response","inof":"success"}");
                    socket.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("=====>");
        }
    
        /**
         * 
         * @param pSocket
         * @param content
         */
        private static void responseText(Socket pSocket, String content) {
            StringBuffer buffer = new StringBuffer();
            // buffer.append("HTTP/1.1 200 OK
    ");
            // buffer.append("Date: Tue, 14 Sep 1999 02:19:57 GMT
    ");
            // buffer.append("Server: Apache/1.2.6
    ");
            // buffer.append("Connection: close
    ");
            // buffer.append("Content-Type: text/html
    ");
            // buffer.append("
    ");
            buffer.append(content);
            try {
                OutputStream os = pSocket.getOutputStream();
                os.write(buffer.toString().getBytes());
                os.flush();
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 得到内容
         * 
         * @param data
         * @param len
         * @return
         */
        private static String getContent(byte[] data, int len) {
            String result = "";
            String content = new String(data, 0, len);
            System.out.println("content: " + content);
            String[] lines = content.split("
    ");
            String firstStr = lines[0];
            // 判断是POST还是GET
            String method = firstStr.split(" ")[0].toLowerCase();
            System.out.println("method: " + method);
            if ("get".equals(method)) {
                // get
            } else {
                // post
                String line = lines[lines.length - 1];
                int index = line.indexOf("=");
                result = line.substring(index + 1);
                try {
    
                    result = URLDecoder.decode(result, "gbk");
                    System.out.println("result: " + result);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    }
  • 相关阅读:
    SQL Server 2005 中 Cross join & Cross Apply & Outer Apply 的区别
    How to install Database using commandline prompt
    Get SQL Server default collation
    Shrink DB and Log
    Visual C++ Debugging: Why does program work in debug mode, but fail in release mode?
    使用Windows的SHFileOperation外壳函数实现文件操作
    2 types of C++ compiler guards
    LUA中的基本函数库
    Ruby 数组操作方法(转)
    ruby中的yield的概念
  • 原文地址:https://www.cnblogs.com/afluy/p/3917106.html
Copyright © 2011-2022 走看看