简易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;
    }
}

简易JAVA_WEB服务器处理POST请求得到内容,布布扣,bubuko.com

时间: 2024-10-19 16:46:33

简易JAVA_WEB服务器处理POST请求得到内容的相关文章

asp.net 开发问题:Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值。

"Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值." 这个问题在开发需要上传文件的时候可能会遇到,今天遇到这个问题,百度过也有挺多的修改方法. 方法1: 修改IIS的applicationhost.config文件位置: %windir%/system32/inetsrv/config/applicationhost.config                    或                   %windir%\system32\inetsrv\c

理解tomcat之搭建简易http服务器

做过java web的同学都对tomcat非常熟悉.我们在使用tomcat带来的便利的同时,是否想过tomcat是如何工作的呢?tomcat本质是一个http服务器,本篇文章将搭建一个简单的http服务器. 1 Catalina模型 首先我们先了解一下tomcat的大致工作原理.tomcat的核心是servlet容器,我们称它为Catalina(为什么叫这个名字?我也不知道 ̄へ ̄).模型图如1.1 图1.1 Connector是用来"连接"容器里边的请求的.它的工作是为接收到每一个 H

Socket 初识 用Socket建立一个简易Web服务器

摘自<Asp.Net 本质论>作者:郝冠军 //在.Net中.system.Net命名空间提供了网络编程的大多数数据据类型以及常用操作,其中常用的类型如下:/*IPAddress 类表示一个IP地址* IPEndPoint类用来表示一个IP地址和一个端口号的组合,成为网络的端点.* System.Net.Sockets命名空间中提供了基于Socked编程的数据类型.* Socket类封装了Socked的操作.* 常见的操作:* Listen:设置基于连接通信的Socket进入监听状态,并设置等

TinyWS —— 一个C++写的简易WEB服务器(一)

写在前面 每个码农可能都会偶尔有自己做一个常用软件的想法,比如操作系统,编译器,邮件服务器/客户端,文字编辑器等等.这里面有些很难,比如操作系统,做一个最简单的也要付出很大的努力,可是大部分常用工具都是可以比较容易的做一个简易版本(当然也是只能玩玩而已).于是我做了一个非常简陋的WEB服务器 —— TinyWS.这里主要是记录下自己整个过程中的一些想法. TinyWS是用C++”从头开始“做的,也就是说,除了C/C++的标准库和操作系统的系统调用,并没有使用第三方库.我并不喜欢C++(甚至有些厌

Python实现简易HTTP服务器与MINI WEB框架(利用WSGI实现服务器与框架解耦)

本文描述如果简单实现自定义Web服务器与自定义简易框架,并且不断进行版本迭代,从而清晰的展现服务器与Web框架之间是如何结合.如何配合工作的.以及WSGI是什么. 一.选取一个自定义的服务器版本 参照 https://www.cnblogs.com/leokale-zz/p/11957768.html 中的各种服务器实现版本,我们选择比较简单的多进程版本作为演示版本. 代码如下: import socket import re import multiprocessing def handle_

无法向会话状态服务器发出会话状态请求(转)

无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求.如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态

echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小demo的效果图如下:(很熟悉,有没有) 2.按照echarts的使用方法新建一个echarts.html文件.为ECharts准备一个具备大小(宽高)的Dom(讲的有点细,熟悉的朋友直接跳过) <!DOCTYPE html> <head> <meta charset="u

Errore HTTP 404.2 - Not Found&quot; IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理

今天配置本地iis出现了一些问题,第一个是出现cgi等错误,iis重新安装后(大部分功能都打勾了)还是不能解决,选择iis服务器根目录,选择isapi和cgi限制,跟服务器iis对比了下,发现里面只有asp.net v2.0,于是添加了一个4.0,windows目录下的Microsoft.NET/Framework/v4.0.30319/aspnet_isapi.dll,问题解决 第二个问题是直接加了个默认目录是index.aspx,用了url重写,出现Errore HTTP 404.2 - N

解决:getWeatherbyCityName(city),服务器无法处理请求。 ---&gt; 未将对象引用设置到对象的实例。

原文:getWeatherbyCityName(city),服务器无法处理请求. ---> 未将对象引用设置到对象的实例. 解决方法:不要直接使用 “服务引用” , 添加为 “Web 引用” 最近用C#在winform中做一个天气预报的小程序,在网上搜了很多资料,包括现成的程序,如http://blog.csdn.net/qishuangquan/article/details/6039287,但运行到getWeatherbyCityName(city),都会出错,提示服务器无法处理请求. --