apache mina: mina对http协议支持

来源:互联网 发布:ios比价软件app 编辑:程序博客网 时间:2024/04/28 00:37


apache  mina对http支持力度不够,apache mina作者的另外一个开源项目asynweb 也因为年久了,不在更新。

本次测试使用httpclient 来模拟http请求, 使用apache  mina作为web服务器。


httpclient测试代码:

/** * This example demonstrates the recommended way of using API to make sure  * the underlying connection gets released back to the connection manager. */public class ClientConnectionRelease {    public final static void main(String[] args) throws Exception {        HttpClient httpclient = new DefaultHttpClient();        HttpGet httpget = new HttpGet("http://localhost:8080");         // Execute HTTP request        System.out.println("executing request " + httpget.getURI());        HttpResponse response = httpclient.execute(httpget);        System.out.println("----------------------------------------");        System.out.println(response.getStatusLine());        System.out.println("----------------------------------------");        // When HttpClient instance is no longer needed,         // shut down the connection manager to ensure        // immediate deallocation of all system resources        httpclient.getConnectionManager().shutdown();            }}


apache  mina   httpserver代码:

public class HttpServer extends IoHandlerAdapter{@Overridepublic void messageReceived(IoSession session, Object message)throws Exception {if(message instanceof  HttpRequestImpl){//对httprequest 解析的支持,但是支持力度不够HttpRequestImpl request =(HttpRequestImpl)message;System.out.println("****messageReceived*****"+request.toString());HttpVersion ver=HttpVersion.HTTP_1_1;HttpStatus status=HttpStatus.SUCCESS_OK;Map<String, String> headers =new HashMap<String, String>();DefaultHttpResponse response =new DefaultHttpResponse(ver,status,headers );session.write(response);//当数据写完后,才关闭通道session.close();}}public HttpServer() {IoAcceptor acceptor =new NioSocketAcceptor();//http 协议解析acceptor.getFilterChain().addFirst("httpcodec", new ProtocolCodecFilter(new HttpServerEncoder(),new HttpServerDecoder()));acceptor.setHandler(this);try {acceptor.bind(new InetSocketAddress(8080));} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {HttpServer httpServer=new HttpServer();}}

httpserver服务端打印:

****messageReceived*****HTTP REQUEST METHOD: GET
VERSION: HTTP/1.1
PATH: /
QUERY:
--- HEADER --- 
connection:Keep-Alive
host:localhost
user-agent:Apache-HttpClient/4.1 (java 1.5)
--- PARAMETERS --- 


messageSent:HTTP RESPONSE STATUS: SUCCESS_OK
VERSION: HTTP/1.1
--- HEADER --- 

httpclient端打印:

executing request http://localhost:8080
----------------------------------------
HTTP/1.1 200 OK
----------------------------------------

apache  mina  已经不在更新,依赖mina建立的项目也不更新了,apache mina 对http协议也非常差,就不在继续研究了。%>_<%

0 0
原创粉丝点击