一、httpservice接口开发
httpservice是Java语言自带的HTTP服务器,提供了丰富的HTTP服务端构建方法。它可以对底层的字节流封装,对HTTP Header进行处理,提供访问参数的各种方式等。 httpservice提供了HttpService接口,我们可以通过实现这个接口来开发HTTP服务端。在接口中,我们只需要实现handle方法,并在该方法中编写处理HTTP请求的逻辑。
public interface HttpService {
void handle(
HttpRequest request,
HttpResponse response,
HttpContext context) throws HttpException, IOException;
}
其中,HttpRequest是封装了HTTP头和HTTP实体的类,HttpResponse封装了响应头和实体的类,HttpContext用来存储HTTP上下文信息。
二、httpservice是什么
httpservice是Java类库中自带的HTTP服务器,可以提供监听HTTP请求,处理HTTP请求的功能。使用httpservice搭建HTTP服务端,既可以提供Web服务,也可以提供自定义的HTTP API接口。 httpservice使用简单,轻量级,具有良好的可扩展性和性能优势,可以处理同步和异步HTTP请求。
三、httpservice启动项
在使用httpservice之前,需要新建一个HttpServer对象。HttpServer对象是httpservice中最为重要、最为基础的启动项。
HttpServer httpServer = HttpServer.create(new InetSocketAddress(8080), 0);
其中,create方法创建了一个默认的Server对象,同时绑定了一个监听地址和端口号。第一个参数表示监听端口号,第二个参数为可选参数,表示并发请求的队列大小。 创建HttpServer对象后,需要注册HttpHandler。HttpHandler是httpservice中对请求进行处理的关键。
httpServer.createContext("/", new MyHttpHandler());
上述代码片段中,将MyHttpHandler对象注册到监听"/"路径下,随后便可以对该路径下的请求进行处理。
四、httpservice实现接口调用
当接收到某个请求时,HttpHandler将根据请求的路径查找具体的处理逻辑,并调用待实现的HttpService接口的实现类的handle方法。 下面是一个简单的HttpService实现类,处理来自客户端的请求并返回相应的Response。
public class MyHttpService implements HttpService {
@Override
public void handle(HttpRequest request, HttpResponse response,
HttpContext context) throws HttpException, IOException {
String method = request.getRequestLine().getMethod().toUpperCase(Locale.ENGLISH);
if (!method.equals("GET") && !method.equals("HEAD")) {
throw new MethodNotSupportedException(method + " method not supported");
}
// 检查URI是否请求了一个资源
String target = request.getRequestLine().getUri();
String queryString = "";
if (target.indexOf("?") > 0) {
queryString = target.substring(target.indexOf("?") + 1);
target = target.substring(0, target.indexOf("?"));
}
// 设置响应头
response.setStatusCode(HttpStatus.SC_OK);
response.setEntity(new StringEntity(
"<h1>请求的资源:" + target + "</h1><p>" + queryString + "</p>"));
}
}