有关Apache MINA HTTP协议支持的信息

有关Apache MINA HTTP协议支持的信息,http,apache-mina,Http,Apache Mina,我们在当前的TCP/IP协议项目中使用了ApacheMina,其中服务器和客户端通过TCP/IP进行通信。所以我们已经有了MINA的一些代码 现在,我们还希望支持http协议,并尽可能重复使用 我需要一些客户机/服务器代码示例,用于使用MINA-HTTP的URL(/servlet)进行连接 我找到了如下链接- 但正在寻找服务器端和客户端的示例代码。 如果有人能在这方面帮助我,那就太好了 谢谢,final Object lock=new Object(); final Object lo

我们在当前的TCP/IP协议项目中使用了ApacheMina,其中服务器和客户端通过TCP/IP进行通信。所以我们已经有了MINA的一些代码

现在,我们还希望支持http协议,并尽可能重复使用

我需要一些客户机/服务器代码示例,用于使用MINA-HTTP的URL(/servlet)进行连接

我找到了如下链接-

但正在寻找服务器端和客户端的示例代码。 如果有人能在这方面帮助我,那就太好了

谢谢,

final Object lock=new Object();
    final Object lock = new Object();
    IoAcceptor acceptor = new NioSocketAcceptor();
    ((NioSocketAcceptor) acceptor).setReuseAddress(true);
    acceptor.getFilterChain().addLast("httpServer", new HttpServerCodec());
    acceptor.setHandler(new IoHandlerAdapter() {
        @Override
        public void messageReceived(IoSession session, Object message) throws Exception {
            // System.out.println("message "+message.getClass()+" "+message);
            if (message instanceof HttpRequest) {
                byte[] bytes = "Hello World!".getBytes();
                Map<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Length", Integer.toString(bytes.length));
                DefaultHttpResponse resp = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SUCCESS_OK,
                        headers);
                session.write(resp);
                session.write(IoBuffer.wrap(bytes));
                session.write(new HttpEndOfContent());
                if (((HttpRequest) message).getRequestPath().equals("/close")) {
                    synchronized (lock) {
                        lock.notify();
                    }
                }
            }
        }
    });
    acceptor.bind(new InetSocketAddress(21212));
    synchronized (lock) {
        lock.wait();
    }
    acceptor.unbind();
    acceptor.dispose(true);
IoAcceptor acceptor=新的NioSocketAcceptor(); ((NioSocketAcceptor)acceptor).setReuseAddress(true); acceptor.getFilterChain().addLast(“httpServer”,新的HttpServerCodec()); acceptor.setHandler(新的IoHandlerAdapter(){ @凌驾 public void messageReceived(IoSession会话,对象消息)引发异常{ //System.out.println(“message”+message.getClass()+”+message); if(HttpRequest的消息实例){ byte[]bytes=“你好,世界!”.getBytes(); Map headers=newhashmap(); headers.put(“Content-Length”,Integer.toString(bytes.Length)); DefaultHttpResponse resp=新的DefaultHttpResponse(HttpVersion.HTTP_1_1,HttpStatus.SUCCESS_OK, 标题); 会议记录(resp); 写入(IoBuffer.wrap(字节)); write(新的HttpEndOfContent()); if(((HttpRequest)message.getRequestPath().equals(“/close”)){ 已同步(锁定){ lock.notify(); } } } } }); acceptor.bind(新的InetSocketAddress(21212)); 已同步(锁定){ lock.wait(); } 接受者解除绑定(); 承兑人。处置(真实);
NioSocketAcceptor acceptor=new NioSocketAcceptor();
acceptor.getFilterChain().addLast(“codec”,新的HttpServerCodec());
acceptor.setHandler(新的IoHandlerAdapter(){
public void messageReceived(IoSession会话,对象消息)引发异常{
if(HttpRequestImpl的消息实例){
HttpRequestImpl request1=(HttpRequestImpl)消息;
}
if(IoBuffer的消息实例){
SocketAddress addr=session.getRemoteAddress()
IoBuffer simbuf=(IoBuffer)消息;
字节[]buff=simbuf.array();
解码字符串=新字符串(buff,“UTF-8”);
系统输出打印项次(解码);
}
if(HttpEndOfContent的消息实例){
byte[]bytes=“确定”。getBytes();
Map headers=newhashmap();
headers.put(“Content-Length”,Integer.toString(bytes.Length));
DefaultHttpResponse resp=新的DefaultHttpResponse(
HttpVersion.HTTP_1_1,HttpStatus.SUCCESS_OK,headers);
会议记录(resp);
写入(IoBuffer.wrap(字节));
write(新的HttpEndOfContent());
}
} 
});
试一试{
acceptor.bind(新的InetSocketAddress(1234));
}捕获(IOE异常){
e、 printStackTrace();
}   

稍微解释一下你的答案。在mina http中,每次HttpServerDecoder.class()通过请求、正文、EndofContent返回时,我们都会使用它。。我们通过HttpServerDecoder中的相应对象接收公共无效消息Received(IoSession session,Object message)。classLooks good.对我来说工作很好我被困在同一个问题上一天了。保存了我的工作..谢谢broCan请在这里解释服务器和客户端部分..我是新手
   NioSocketAcceptor acceptor = new NioSocketAcceptor();
   acceptor.getFilterChain().addLast( "codec", new  HttpServerCodec());
   acceptor.setHandler(new IoHandlerAdapter() { 
    public void messageReceived(IoSession session, Object message)throws Exception {
         if (message instanceof HttpRequestImpl) {
            HttpRequestImpl request1 = (HttpRequestImpl) message;

        }
        if (message instanceof IoBuffer) {
            SocketAddress addr = session.getRemoteAddress()
            IoBuffer simbuf = (IoBuffer) message;
            byte[] buff = simbuf.array();
            String decoded = new String(buff, "UTF-8");
            System.out.println(decoded);

        }
        if (message instanceof HttpEndOfContent) {
            byte[] bytes = "OK".getBytes();
            Map<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Length", Integer.toString(bytes.length));
            DefaultHttpResponse resp = new DefaultHttpResponse(
                    HttpVersion.HTTP_1_1, HttpStatus.SUCCESS_OK, headers);
            session.write(resp);
            session.write(IoBuffer.wrap(bytes));
            session.write(new HttpEndOfContent());

        }

    } 
});
 try {
        acceptor.bind( new InetSocketAddress(1234) );
    } catch (IOException e) {
        e.printStackTrace();
    }