- com.sun.net.httpserver.HttpServer 를 이용한 JAVA 서버
: GET 또는 POST 방식으로 전송시 해당 파라메터를 받아서 문자열 형태로 리턴하는 서버 구성
> 포트 및 핸들러 설정
public class HttpConnection {
private int port = 9000;
HttpServer server = null;
// 서버 연결 및 Context 설정
public HttpConnection() {
try {
server = HttpServer.create(new InetSocketAddress(port),0);
server.createContext("/rg", new HttpGetHandler());
server.createContext("/rp", new HttpPostHandler());
server.setExecutor(null);
server.start();
System.out.println("서버 시작");
} catch (IOException e) {
e.printStackTrace();
System.out.println("서버 연결 실패");
}
}
}
> URL에서 파라메터를 가져오기 위한 클래스 생성
public class UriParser {
public UriParser() {}
public 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 = new ArrayList<String>();
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);
}
}
}
}
}
> GET 방식으로 요청시 처리
public class HttpGetHandler implements HttpHandler{
@Override
public void handle(HttpExchange arg) throws IOException {
System.out.println("request method Get");
arg.getResponseHeaders().add("Access-Control-Allow-Origin", "*");
Map<String, Object> parameters = new HashMap<String, Object>();
URI requestedUri = arg.getRequestURI();
String query = requestedUri.getRawQuery();
UriParser uriParser = new UriParser();
uriParser.parseQuery(query, parameters);
String response = "";
for (String key : parameters.keySet()) {
response += key + " = " + parameters.get(key) + "\n";
}
System.out.println("response : " + response);
arg.sendResponseHeaders(200, response.length());
OutputStream os = arg.getResponseBody();
os.write(response.toString().getBytes());
os.close();
}
}
> POST 방식으로 요청시 처리
public class HttpPostHandler implements HttpHandler{
@Override
public void handle(HttpExchange arg) throws IOException {
System.out.println("request method Post");
arg.getResponseHeaders().add("Access-Control-Allow-Origin", "*");
Map<String, Object> parameters = new HashMap<String, Object>();
InputStreamReader isr = new InputStreamReader(arg.getRequestBody(), "utf-8");
BufferedReader br = new BufferedReader(isr);
String query = br.readLine();
UriParser uriParse = new UriParser();
uriParse.parseQuery(query, parameters);
String response = "";
for (String key : parameters.keySet()) {
response += key + "=" + parameters.get(key) + ", ";
}
System.out.println("response : " + response);
arg.sendResponseHeaders(200, response.length());
OutputStream os = arg.getResponseBody();
os.write(response.toString().getBytes());
os.close();
}
}