您可以添加HttpResponseInterceptor,它增加了「連接:保持活動」文件HttpComponents Custom stratagey
參見段和「保持活動:超時= X,最大值= Y」視標頭的響應來自org.apache.http.protocol.ResponseConnControl的評估,它在需要時設置「Connection:close」標題。
class ResposeKeepAliveHeaderMod implements HttpResponseInterceptor {
@Override
public void process(HttpResponse response, HttpContext context)
throws HttpException, IOException {
final Header explicit = response.getFirstHeader(HTTP.CONN_DIRECTIVE);
if (explicit != null && HTTP.CONN_CLOSE.equalsIgnoreCase(explicit.getValue())) {
// Connection persistence explicitly disabled
return;
}else{
// "Connection: Keep-Alive" and "Keep-Alive: timeout=x, max=y"
response.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE);
response.setHeader(HTTP.CONN_KEEP_ALIVE, "timeout=30, max=100");
}
}
}
你需要把它添加到HttpProcessor,ResponseConnControl後:
HttpProcessor httpProcessor = HttpProcessorBuilder.create()
//.addFirst(new RequestTrace())
.add(new ResponseDate())
//.add(new ResponseServer("MyServer-HTTP/1.1"))
.add(new ResponseContent())
.add(new ResponseConnControl())
.addLast(new ResposeKeepAliveHeaderMod())
.build();
然後建立服務器:
final HttpServer server = ServerBootstrap.bootstrap()
.setListenerPort(9090)
.setHttpProcessor(httpProcessor)
.setSocketConfig(socketConfig)
.setExceptionLogger(new StdErrorExceptionLogger())
.setHandlerMapper(handle_map)
.create();
的
可能重複[如何添加,設置和獲取頭的請求HttpClient?](http://stackoverflow.com/questions/13743205/how-to-add-set-and-get-header-in-request-of-httpclient) – 2015-03-05 14:07:18
這不是http://的重複stackoverflow.com/questions/13743205/how-to-add-se t-and-get-header-in-request-of-httpclient - 我問的是服務器端,而不是HttpClient(順便提一下,我也是在11個月前發佈的) – 2015-03-07 00:10:55