Skip to content

Instantly share code, notes, and snippets.

@Classy-Bear
Created February 9, 2021 06:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Classy-Bear/a4d632208cbb33024275b43ef5eb82eb to your computer and use it in GitHub Desktop.
Save Classy-Bear/a4d632208cbb33024275b43ef5eb82eb to your computer and use it in GitHub Desktop.
package product.methods;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.net.URLDecoder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EchoPostHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
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);
String response = "";
System.out.println(he.getRequestMethod());
System.out.println(parameters.keySet());
for (String key : parameters.keySet()) {
response += key;
}
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
private 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 values = (List) obj;
values.add(value);
} else if (obj instanceof String) {
List values = new ArrayList();
values.add((String) obj);
values.add(value);
parameters.put(key, values);
}
} else {
parameters.put(key, value);
}
}
}
}
}
////////
package product.methods;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.net.URLDecoder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EchoPostHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
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);
String response = "";
System.out.println(he.getRequestMethod());
System.out.println(parameters.keySet());
for (String key : parameters.keySet()) {
response += key;
}
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
private 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 values = (List) obj;
values.add(value);
} else if (obj instanceof String) {
List values = new ArrayList();
values.add((String) obj);
values.add(value);
parameters.put(key, values);
}
} else {
parameters.put(key, value);
}
}
}
}
}
/////
import com.sun.net.httpserver.HttpServer;
public class Router {
private final HttpServer server;
private final Controller controller = new Controller();
public Router(HttpServer server) {
this.server = server;
}
public HttpServer addRoutes() {
server.createContext("/test", controller.getMyHandler());
server.createContext("/echoPost", controller.getEchoPostHandler());
return server;
}
}
/////
import product.methods.EchoPostHandler;
import product.methods.MyHandler;
public class Controller {
Controller() {}
MyHandler getMyHandler() {
return new MyHandler();
}
EchoPostHandler getEchoPostHandler() {
return new EchoPostHandler();
}
}
/////
import com.sun.net.httpserver.HttpServer;
import lib.Router;
import java.net.InetSocketAddress;
public class App {
public static void main (String[] args) {
try {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
Router router = new Router(server);
HttpServer serverWithRoutes = router.addRoutes();
serverWithRoutes.setExecutor(null);
serverWithRoutes.start();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment