From bcb0c5176671b57076ccabb9eff1917657870ae4 Mon Sep 17 00:00:00 2001 From: jinyu Date: Mon, 3 Aug 2015 19:52:07 +0800 Subject: [PATCH] =?UTF-8?q?HttpUtil=E6=96=B0=E5=A2=9E=E9=87=8D=E8=BD=BD?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dispatcher/WeixinMessageDispatcher.java | 3 +- .../weixin4j/socket/WeixinRequestHandler.java | 8 +-- .../com/foxinmy/weixin4j/util/HttpUtil.java | 52 +++++++++++++------ 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java index 6423ee44..c42c904d 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java @@ -179,8 +179,7 @@ public class WeixinMessageDispatcher { if (alwaysResponse) { context.write(BlankResponse.global); } else { - context.writeAndFlush( - HttpUtil.createHttpResponse(null, NOT_FOUND, null)) + context.writeAndFlush(HttpUtil.createHttpResponse(NOT_FOUND)) .addListener(ChannelFutureListener.CLOSE); } } diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java index 51d87a85..c974c7b0 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java @@ -63,7 +63,7 @@ public class WeixinRequestHandler extends return; } ctx.writeAndFlush( - HttpUtil.createHttpResponse(null, FORBIDDEN, null)) + HttpUtil.createHttpResponse(FORBIDDEN)) .addListener(ChannelFutureListener.CLOSE); return; } else if (request.getMethod().equals(HttpMethod.POST.name())) { @@ -72,7 +72,7 @@ public class WeixinRequestHandler extends request.getTimeStamp(), request.getNonce()).equals( request.getSignature())) { ctx.writeAndFlush( - HttpUtil.createHttpResponse(null, FORBIDDEN, null)) + HttpUtil.createHttpResponse(FORBIDDEN)) .addListener(ChannelFutureListener.CLOSE); return; } @@ -82,14 +82,14 @@ public class WeixinRequestHandler extends request.getEncryptContent()).equals( request.getMsgSignature())) { ctx.writeAndFlush( - HttpUtil.createHttpResponse(null, FORBIDDEN, null)) + HttpUtil.createHttpResponse(FORBIDDEN)) .addListener(ChannelFutureListener.CLOSE); return; } } } else { ctx.writeAndFlush( - HttpUtil.createHttpResponse(null, METHOD_NOT_ALLOWED, null)) + HttpUtil.createHttpResponse(METHOD_NOT_ALLOWED)) .addListener(ChannelFutureListener.CLOSE); return; } diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/HttpUtil.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/HttpUtil.java index 1d8644c1..ef40e186 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/HttpUtil.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/HttpUtil.java @@ -5,19 +5,17 @@ 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.HttpHeaders.Names.DATE; import static io.netty.handler.codec.http.HttpHeaders.Names.USER_AGENT; -import static io.netty.handler.codec.http.HttpResponseStatus.OK; import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1; import io.netty.buffer.Unpooled; import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.FullHttpResponse; +import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpHeaders.Values; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponseStatus; import java.util.Date; -import org.apache.http.HttpHeaders; - import com.foxinmy.weixin4j.startup.WeixinServerBootstrap; /** @@ -34,32 +32,54 @@ public class HttpUtil { private static String SERVER = "netty4"; private static String WEIXIN4J = "weixin4j-server"; + /** + * 创建只有状态的HttpResponse响应 + * + * @param status + * 响应状态 + * @return HttpResponse + */ + public static HttpResponse createHttpResponse(HttpResponseStatus status) { + FullHttpResponse httpResponse = new DefaultFullHttpResponse(HTTP_1_1, + status); + createHeaders(httpResponse); + return httpResponse; + } + + /** + * 创建有内容的HttpResponse响应 + * + * @param content + * 响应内容 + * @param status + * 响应状态 + * @param contentType + * 响应类型 + * @return HttpResponse + */ public static HttpResponse createHttpResponse(String content, HttpResponseStatus status, String contentType) { - if (content == null) { - content = ""; - } - if (StringUtil.isBlank(contentType)) { - contentType = Consts.CONTENTTYPE$TEXT_PLAIN; - } - if (status == null) { - status = OK; - } - FullHttpResponse httpResponse = new DefaultFullHttpResponse(HTTP_1_1, - status, Unpooled.copiedBuffer(content, Consts.UTF_8)); + FullHttpResponse httpResponse = null; + + httpResponse = new DefaultFullHttpResponse(HTTP_1_1, status, + Unpooled.copiedBuffer(content, Consts.UTF_8)); httpResponse.headers().set( CONTENT_TYPE, String.format("%s;encoding=%s", contentType, Consts.UTF_8.displayName())); httpResponse.headers().set(CONTENT_LENGTH, content.getBytes(Consts.UTF_8).length); + createHeaders(httpResponse); + return httpResponse; + } + + private static void createHeaders(FullHttpResponse httpResponse) { httpResponse.headers().set(CONNECTION, Values.KEEP_ALIVE); httpResponse.headers().set(DATE, new Date()); - httpResponse.headers().set(HttpHeaders.SERVER, SERVER); + httpResponse.headers().set(HttpHeaders.Names.SERVER, SERVER); httpResponse.headers() .set(USER_AGENT, String.format("%s/%s", WEIXIN4J, WeixinServerBootstrap.VERSION)); - return httpResponse; } }