简易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\r\n");
        // buffer.append("Date: Tue, 14 Sep 1999 02:19:57 GMT\r\n");
        // buffer.append("Server: Apache/1.2.6\r\n");
        // buffer.append("Connection: close\r\n");
        // buffer.append("Content-Type: text/html\r\n");
        // buffer.append("\r\n");
        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("\r\n");
        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;
    }
}

 

posted @ 2014-08-16 23:51  skyko  阅读(942)  评论(0编辑  收藏  举报