Created
February 9, 2021 06:24
-
-
Save Classy-Bear/a4d632208cbb33024275b43ef5eb82eb to your computer and use it in GitHub Desktop.
This file contains 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
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