请求样式:
http://10.32.7.7:2360/?name=aaa 注意这里必须是问号,name 等号的形式
代码留存
package com.cip.arch.enne;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpRequestDecoder;
import io.netty.handler.codec.http.HttpResponseEncoder;
import io.netty.handler.stream.ChunkedWriteHandler;
public class NettyServer
{
private static final int SERVER_PORT = 2360;
private static final String DEFAULT_URL = "/";
public void start(final String ip) throws Exception
{
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try
{
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>()
{
@Override
protected void initChannel(SocketChannel ch) throws Exception
{
ch.pipeline().addLast("http-decoder", new HttpRequestDecoder());
ch.pipeline().addLast("http-encoder", new HttpResponseEncoder());
ch.pipeline().addLast("http-aggregator", new HttpObjectAggregator(65536));
ch.pipeline().addLast("http-chunked", new ChunkedWriteHandler());
ch.pipeline().addLast("HttpServerHandler", new NettyServerHandler());
}
});
ChannelFuture future = b.bind(ip, SERVER_PORT).sync();
System.out.println("HTTP server start: " + "http://"+ip+":" + SERVER_PORT + DEFAULT_URL);
future.channel().closeFuture().sync();
}
finally
{
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
}
public static void main(String[] args) throws Exception {
String ip = "10.32.7.7";
new NettyServer().start(ip);
}
}
package com.ctp.sech.engi;
import static io.netty.handler.codec.http.HttpHeaders.Names.CONTENT_LENGTH;
import static io.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE;
import static io.netty.handler.codec.http.HttpResponseStatus.OK;
import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.QueryStringDecoder;
public class NettyServerHandler extends SimpleChannelInboundHandler<FullHttpRequest> {
StringBuilder sb = new StringBuilder();
JSONArray jsonarray = new JSONArray();
public NettyServerHandler() {
jsonarray.add(getJsonObj("name", "ar.sear.ocalplay"));
jsonarray.add(getJsonObj("name", "ar.sear.ticket"));
jsonarray.add(getJsonObj("name", "ar.sear.tel"));
jsonarray.add(getJsonObj("name", "ar.sear.surehotel"));
}
public JSONObject getJsonObj(String name, String value) {
JSONObject jsonobj = new JSONObject();
jsonobj.put(name,value);
return jsonobj;
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
cause.printStackTrace();
}
@Override
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) //
throws Exception {//函数执行次数?
//解析get请求参数
QueryStringDecoder decoder = new QueryStringDecoder(msg.getUri());
Map<String, List<String>> parame = decoder.parameters();
for(Entry<String, List<String>> entry : parame.entrySet()) {
System.out.println(entry.getKey() + " : " +entry.getValue());
}
FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK); // 响应
response.headers().set(CONTENT_TYPE, "text/html; charset=UTF-8");
ByteBuf responseContentByteBuf = Unpooled.copiedBuffer(JSON.toJSONString(jsonarray,SerializerFeature.DisableCircularReferenceDetect).getBytes(Charset.forName("utf-8")));
response.headers().set("Access-Control-Allow-Origin","*"); // 跨域
response.headers().set(CONTENT_LENGTH, responseContentByteBuf.readableBytes());
response.content().writeBytes(responseContentByteBuf);
responseContentByteBuf.release();//zuoyong?
ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);//
}
}