Skip to content

Commit 5cd72b7

Browse files
committed
简单的Http Server
1 parent 5f2bf92 commit 5cd72b7

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/**
2+
* 创建时间:2016-8-5
3+
*/
4+
package cn.aofeng.demo.httpclient;
5+
6+
import java.io.IOException;
7+
import java.io.InputStream;
8+
import java.io.OutputStream;
9+
import java.net.InetSocketAddress;
10+
import java.net.URI;
11+
import java.util.List;
12+
import java.util.Map.Entry;
13+
import java.util.Set;
14+
15+
import org.apache.commons.io.IOUtils;
16+
import org.apache.log4j.Logger;
17+
18+
import com.sun.net.httpserver.Headers;
19+
import com.sun.net.httpserver.HttpExchange;
20+
import com.sun.net.httpserver.HttpHandler;
21+
import com.sun.net.httpserver.HttpServer;
22+
23+
/**
24+
* 简单的HTTP Server。
25+
*
26+
* @author <a href="mailto:[email protected]">聂勇</a>
27+
*/
28+
public class SimpleHttpServer {
29+
30+
private static Logger _logger = Logger.getLogger(SimpleHttpServer.class);
31+
32+
static class MyHandler implements HttpHandler {
33+
34+
@Override
35+
public void handle(HttpExchange httpEx) throws IOException {
36+
InetSocketAddress remoteAddress = httpEx.getRemoteAddress();
37+
_logger.info("收到来自"+remoteAddress.getAddress().getHostAddress()+":"+remoteAddress.getPort()+"的请求");
38+
39+
URI rUri = httpEx.getRequestURI();
40+
_logger.info("请求地址:"+rUri.toString());
41+
42+
String method = httpEx.getRequestMethod();
43+
_logger.info("请求方法:"+method);
44+
45+
Headers headers = httpEx.getRequestHeaders();
46+
Set<Entry<String, List<String>>> headerSet = headers.entrySet();
47+
_logger.info("请求头:");
48+
for (Entry<String, List<String>> header : headerSet) {
49+
_logger.info(header.getKey()+":"+header.getValue());
50+
}
51+
52+
InputStream ins = httpEx.getRequestBody();
53+
String content = IOUtils.toString(ins, "utf-8");
54+
_logger.info("请求内容:"+content);
55+
IOUtils.closeQuietly(ins);
56+
57+
String rc = "Hello, 汉字";
58+
byte[] temp = rc.getBytes("utf-8");
59+
httpEx.sendResponseHeaders(200, temp.length);
60+
OutputStream outs = httpEx.getResponseBody();
61+
outs.write(temp);
62+
IOUtils.closeQuietly(outs);
63+
}
64+
65+
}
66+
67+
/**
68+
* @param args
69+
*/
70+
public static void main(String[] args) {
71+
int port = 8888;
72+
try {
73+
HttpServer server = HttpServer.create(new InetSocketAddress(port), 128);
74+
server.createContext("/get", new MyHandler());
75+
server.createContext("/post", new MyHandler());
76+
server.start();
77+
_logger.info("http server already started, listen port:"+port);
78+
} catch (IOException e) {
79+
_logger.error("", e);
80+
}
81+
}
82+
83+
}

0 commit comments

Comments
 (0)