Java 标准版附带了一个HTTP 服务器API,可以用它来创建一个简单、能工作的嵌入式
HTTP 服务器。下面的程序不需要任何外部依赖。它监听8000 端口,对进来的请求返回一
个成功的HTTP 响应(200),响应内容为如下的JSON 对象:
{"testResponse":"Hello World"}
这里需要一个Java 源文件,包含一个定义了main 方法的类。在main 方法中,创建了一个
服务器实例,该服务器实例根据URL 将请求委托给一个静态处理器(这里被定义为一个
静态内部类):
import java.io.*;
import com.sun.net.httpserver.*;
import java.net.InetSocketAddress;
public class HttpJsonServer {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/", new MyHandler());
server.createContext("/test", new MyHandler2());
server.setExecutor(null);
System.out.println("Starting server on port: 8000");
server.start();
}
static class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
String response = "{\"testResponse\":\"Hello World\"}";
t.getResponseHeaders().set("Content-Type", "application/json");
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
static class MyHandler2 implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
String response = "{\"testResponse\":\"Hello World2\"}";
t.getResponseHeaders().set("Content-Type", "application/json");
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
这个例子非常简单,没有外部依赖,也不需要构建脚本,只需要编译运行即可:
$ javac HttpJsonServer.java
$ java HttpJsonServer
Starting server on port: 8000
可以在另外一个命令行会话里使用Curl 访问服务器:
$ curl -i http://localhost:8000
HTTP/1.1 200 OK
Content-type: application/json
Content-length: 30
Date: Sun, 09 Jun 2013 01:15:15 GMT
{"testResponse":"Hello World"}
Java Web API服务器 | 81
显然这不是一个功能完备的例子,但是它表明使用Java 开发一个能工作的HTTP 服务器是
一个相对简单可实现的目标。