Created
March 23, 2018 11:32
-
-
Save annibuliful/1f2001d1b517c44b25f8f6da9c25bd99 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import java.io.*; | |
| import java.net.InetSocketAddress; | |
| import java.net.URI; | |
| import java.net.URLDecoder; | |
| import java.util.ArrayList; | |
| import java.util.HashMap; | |
| import java.util.List; | |
| import java.util.Map; | |
| import com.sun.net.httpserver.HttpExchange; | |
| import com.sun.net.httpserver.HttpHandler; | |
| import com.sun.net.httpserver.HttpServer; | |
| public class main { | |
| public static void main(String[] args) throws Exception { | |
| HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0); | |
| server.createContext("/test", new MyHandler()); | |
| server.createContext("/get", new EchoGetHandler()); | |
| server.createContext("/post",new EchoPostHandler()); | |
| server.setExecutor(null); // creates a default executor | |
| server.start(); | |
| } | |
| static class MyHandler implements HttpHandler { | |
| @Override | |
| public void handle(HttpExchange t) throws IOException { | |
| String response = "This is the response"; | |
| t.sendResponseHeaders(200, response.length()); | |
| OutputStream os = t.getResponseBody(); | |
| os.write(response.getBytes()); | |
| os.close(); | |
| } | |
| } | |
| static class EchoPostHandler implements HttpHandler { | |
| @Override | |
| public void handle(HttpExchange he) throws IOException { | |
| // parse request | |
| Map<String, Object> parameters = new HashMap<String, Object>(); | |
| InputStreamReader isr = new InputStreamReader(he.getRequestBody(), "utf-8"); | |
| BufferedReader br = new BufferedReader(isr); | |
| String query = br.readLine(); | |
| parseQuery(query, parameters); | |
| // send response | |
| String response = ""; | |
| for (String key : parameters.keySet()) | |
| response += key + " = " + parameters.get(key) + "\n"; | |
| he.sendResponseHeaders(200, response.length()); | |
| OutputStream os = he.getResponseBody(); | |
| os.write(response.toString().getBytes()); | |
| os.close(); | |
| } | |
| } | |
| public static void parseQuery(String query, Map<String, | |
| Object> parameters) throws UnsupportedEncodingException { | |
| if (query != null) { | |
| String pairs[] = query.split("[&]"); | |
| for (String pair : pairs) { | |
| String param[] = pair.split("[=]"); | |
| String key = null; | |
| String value = null; | |
| if (param.length > 0) { | |
| key = URLDecoder.decode(param[0], | |
| System.getProperty("file.encoding")); | |
| } | |
| if (param.length > 1) { | |
| value = URLDecoder.decode(param[1], | |
| System.getProperty("file.encoding")); | |
| } | |
| if (parameters.containsKey(key)) { | |
| Object obj = parameters.get(key); | |
| if (obj instanceof List<?>) { | |
| List<String> values = (List<String>) obj; | |
| values.add(value); | |
| } else if (obj instanceof String) { | |
| List<String> values = new ArrayList<String>(); | |
| values.add((String) obj); | |
| values.add(value); | |
| parameters.put(key, values); | |
| } | |
| } else { | |
| parameters.put(key, value); | |
| } | |
| } | |
| } | |
| } | |
| static class EchoGetHandler implements HttpHandler { | |
| @Override | |
| public void handle(HttpExchange he) throws IOException { | |
| // parse request | |
| Map<String, Object> parameters = new HashMap<String, Object>(); | |
| URI requestedUri = he.getRequestURI(); | |
| String query = requestedUri.getRawQuery(); | |
| parseQuery(query, parameters); | |
| // send response | |
| String response = ""; | |
| for (String key : parameters.keySet()) | |
| response += key + " = " + parameters.get(key) + "\n"; | |
| he.sendResponseHeaders(200, response.length()); | |
| OutputStream os = he.getResponseBody(); | |
| os.write(response.toString().getBytes()); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment