packagecom.monitor.app.utils;importcom.alibaba.fastjson.JSON;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;importcom.sun.net.httpserver.HttpExchange;importcom.sun.net.httpserver.HttpHandler;importcom.sun.net.httpserver.HttpServer;import java.io.*;importjava.net.InetSocketAddress;importjava.net.URI;importjava.util.Map;public classTest {public static void main(String[] args) throwsIOException {
HttpServer httpServer= HttpServer.create(new InetSocketAddress(8001), 0);
httpServer.createContext("/test", newTestHandler());
httpServer.start();
System.out.println("8001端口已成功启动");
}//接口接收处理器
static class TestHandler implementsHttpHandler {
@Overridepublic void handle(HttpExchange httpExchange) throwsIOException {//返回
String rtn="调用成功";
httpExchange.sendResponseHeaders(200, 0);//获取请求路径
URI requestURI =httpExchange.getRequestURI();
System.out.println("请求路径为:"+requestURI);//获取请求方法
String requestMethod =httpExchange.getRequestMethod();
System.out.println("请求方法为:"+requestMethod);//获取请求体
InputStream requestBody =httpExchange.getRequestBody();
InputStreamReader inputStreamReader= newInputStreamReader(requestBody);
BufferedReader bufferedReader= newBufferedReader(inputStreamReader);
StringBuffer stringBuffer= newStringBuffer();
String s= "";while ((s = bufferedReader.readLine()) != null) {
stringBuffer.append(s.trim());
}if("GET".equals(requestMethod)){
String[] pathParams= requestURI.toString().split("\\?");
String[] params= requestURI.toString().split("\\?")[1].split("&");for(String str : params){
String key= str.split("=")[0];
String value= str.split("=")[1];
System.out.println("请求参数名:" +key);
System.out.println("请求参数值:" +value);
}
}if("POST".equals(requestMethod)){//此处引入谷歌Gson框架将String转为Map方便获取参数//Gson gson = new Gson();//Map map = gson.fromJson(stringBuffer.toString(), new TypeToken>(){}.getType());
Map map =JSON.parseObject(stringBuffer.toString());
String requestParam= map.get("imgPath").toString();for(Object obj : map.keySet()){
System.out.println("key为:" +obj);
System.out.println("value为:" +map.get(obj));
}
}
OutputStream responseBody=httpExchange.getResponseBody();
responseBody.write(rtn.getBytes());
responseBody.close();
}
}
}
该博客展示了使用Java实现HTTP接口的代码。创建了一个监听8001端口的HTTP服务器,定义了接口接收处理器。在处理器中,能获取请求路径、方法和请求体,针对GET和POST请求分别处理参数,并返回调用成功的响应。

2158

被折叠的 条评论
为什么被折叠?



