http服务器简单实现

做一个android程序的客户端。
想用webservice实现一个模拟服务用来做测试用。
结果调试老出问题。
那么研究研究http服务吧?
如下代码:

import java.io.IOException; 
import java.io.OutputStream; 
import java.net.InetSocketAddress; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Set; 
import java.util.concurrent.Executors; 
   
import com.sun.net.httpserver.Headers; 
import com.sun.net.httpserver.HttpExchange; 
import com.sun.net.httpserver.HttpHandler; 
import com.sun.net.httpserver.HttpServer; 
//在eclipse中会出现Access restriction: The type Headers is not accessible due to restriction on required library 
//解决办法:把Windows-Preferences-Java-Complicer- Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access rules)选为Warning就可以编译通过。 
/**
 * 使用jdk自带sun httpserver组件构建Http服务器,
 * JDK自带的HttpServer是一个非常轻量级的Http服务端框架,但是它非常灵活,易于扩展,
 * @author Administrator
 *
 */ 
public class HttpServerDemo { 
    public static void main(String[] args) throws IOException { 
        InetSocketAddress addr = new InetSocketAddress(8081); 
        HttpServer server = HttpServer.create(addr, 0); 
   
        server.createContext("/", new MyHandler()); 
        server.setExecutor(Executors.newCachedThreadPool()); 
        server.start(); 
        System.out.println("Server is listening on port 8081"); 
    } 
} 
   
class MyHandler implements HttpHandler { 
       
    public void handle(HttpExchange exchange) throws IOException { 
           
        String requestMethod = exchange.getRequestMethod(); 
        System.out.println("处理新请求:"+requestMethod); 
        if (requestMethod.equalsIgnoreCase("GET")) { 
            Headers responseHeaders = exchange.getResponseHeaders(); 
            responseHeaders.set("Content-Type", "text/plain"); 
            exchange.sendResponseHeaders(200, 0); 
   
            OutputStream responseBody = exchange.getResponseBody(); 
            Headers requestHeaders = exchange.getRequestHeaders(); 
            Set<String> keySet = requestHeaders.keySet(); 
            Iterator<String> iter = keySet.iterator(); 
            while (iter.hasNext()) { 
                String key = iter.next(); 
                List values = requestHeaders.get(key); 
                String s = key + " = " + values.toString() + "\n"; 
                responseBody.write(s.getBytes()); 
            } 
            responseBody.close(); 
        } 
    } 
}

运行效果
服务端效果
简单http服务器,服务端运行效果
浏览器效果
http服务简单实现
代码简单解析
MyHandler 就是一个监听请求的。

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/89382294