HttpResponseUtil.java 2.2 KB
package com.zhonglai.socket.html.http.util;

import com.zhonglai.dto.Message;
import com.zhonglai.serialization.GsonConstructor;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.CharsetUtil;

import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE;
import static io.netty.handler.codec.http.HttpResponseStatus.OK;
import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;

/**
 * 返回操作工具
 */
public class HttpResponseUtil {
    /**
     * 成功返回消息
     * @param ctx
     * @param txt
     */
    public static void sendOkString(ChannelHandlerContext ctx, String txt)
    {
        FullHttpResponse response = newOKResponse();
        StringBuilder buf = new StringBuilder();
        buf.append(txt);
        ByteBuf buffer = Unpooled.copiedBuffer(buf, CharsetUtil.UTF_8);
        response.content().writeBytes(buffer);
        buffer.release();
        ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
    }

    /**
     * 成功返回消息
     * @param ctx
     * @param message
     */
    public static void sendOkMessage(ChannelHandlerContext ctx,Message message)
    {
        sendOkString(ctx, GsonConstructor.get().toJson(message));
    }

    /**
     * 成功返回
     * @return
     */
    public static FullHttpResponse newOKResponse()
    {
        FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK);
        response.headers().set(CONTENT_TYPE, "text/html; charset=UTF-8");
        return response;
    }

    /**
     * 错误返回
     * @param status
     * @return
     */
    public static FullHttpResponse newERResponse(HttpResponseStatus status)
    {
        FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1,
                status, Unpooled.copiedBuffer("Failure: " + status.toString()
                + "\r\n", CharsetUtil.UTF_8));
        response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8");
        return response;
    }
}