HttpUtil新增重载方法

This commit is contained in:
jinyu 2015-08-03 19:52:07 +08:00
parent 283b228b2d
commit bcb0c51766
3 changed files with 41 additions and 22 deletions

View File

@ -179,8 +179,7 @@ public class WeixinMessageDispatcher {
if (alwaysResponse) { if (alwaysResponse) {
context.write(BlankResponse.global); context.write(BlankResponse.global);
} else { } else {
context.writeAndFlush( context.writeAndFlush(HttpUtil.createHttpResponse(NOT_FOUND))
HttpUtil.createHttpResponse(null, NOT_FOUND, null))
.addListener(ChannelFutureListener.CLOSE); .addListener(ChannelFutureListener.CLOSE);
} }
} }

View File

@ -63,7 +63,7 @@ public class WeixinRequestHandler extends
return; return;
} }
ctx.writeAndFlush( ctx.writeAndFlush(
HttpUtil.createHttpResponse(null, FORBIDDEN, null)) HttpUtil.createHttpResponse(FORBIDDEN))
.addListener(ChannelFutureListener.CLOSE); .addListener(ChannelFutureListener.CLOSE);
return; return;
} else if (request.getMethod().equals(HttpMethod.POST.name())) { } else if (request.getMethod().equals(HttpMethod.POST.name())) {
@ -72,7 +72,7 @@ public class WeixinRequestHandler extends
request.getTimeStamp(), request.getNonce()).equals( request.getTimeStamp(), request.getNonce()).equals(
request.getSignature())) { request.getSignature())) {
ctx.writeAndFlush( ctx.writeAndFlush(
HttpUtil.createHttpResponse(null, FORBIDDEN, null)) HttpUtil.createHttpResponse(FORBIDDEN))
.addListener(ChannelFutureListener.CLOSE); .addListener(ChannelFutureListener.CLOSE);
return; return;
} }
@ -82,14 +82,14 @@ public class WeixinRequestHandler extends
request.getEncryptContent()).equals( request.getEncryptContent()).equals(
request.getMsgSignature())) { request.getMsgSignature())) {
ctx.writeAndFlush( ctx.writeAndFlush(
HttpUtil.createHttpResponse(null, FORBIDDEN, null)) HttpUtil.createHttpResponse(FORBIDDEN))
.addListener(ChannelFutureListener.CLOSE); .addListener(ChannelFutureListener.CLOSE);
return; return;
} }
} }
} else { } else {
ctx.writeAndFlush( ctx.writeAndFlush(
HttpUtil.createHttpResponse(null, METHOD_NOT_ALLOWED, null)) HttpUtil.createHttpResponse(METHOD_NOT_ALLOWED))
.addListener(ChannelFutureListener.CLOSE); .addListener(ChannelFutureListener.CLOSE);
return; return;
} }

View File

@ -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.CONTENT_TYPE;
import static io.netty.handler.codec.http.HttpHeaders.Names.DATE; 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.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 static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.FullHttpResponse; 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.HttpHeaders.Values;
import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponse;
import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpResponseStatus;
import java.util.Date; import java.util.Date;
import org.apache.http.HttpHeaders;
import com.foxinmy.weixin4j.startup.WeixinServerBootstrap; import com.foxinmy.weixin4j.startup.WeixinServerBootstrap;
/** /**
@ -34,32 +32,54 @@ public class HttpUtil {
private static String SERVER = "netty4"; private static String SERVER = "netty4";
private static String WEIXIN4J = "weixin4j-server"; 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, public static HttpResponse createHttpResponse(String content,
HttpResponseStatus status, String contentType) { HttpResponseStatus status, String contentType) {
if (content == null) { FullHttpResponse httpResponse = null;
content = "";
} httpResponse = new DefaultFullHttpResponse(HTTP_1_1, status,
if (StringUtil.isBlank(contentType)) { Unpooled.copiedBuffer(content, Consts.UTF_8));
contentType = Consts.CONTENTTYPE$TEXT_PLAIN;
}
if (status == null) {
status = OK;
}
FullHttpResponse httpResponse = new DefaultFullHttpResponse(HTTP_1_1,
status, Unpooled.copiedBuffer(content, Consts.UTF_8));
httpResponse.headers().set( httpResponse.headers().set(
CONTENT_TYPE, CONTENT_TYPE,
String.format("%s;encoding=%s", contentType, String.format("%s;encoding=%s", contentType,
Consts.UTF_8.displayName())); Consts.UTF_8.displayName()));
httpResponse.headers().set(CONTENT_LENGTH, httpResponse.headers().set(CONTENT_LENGTH,
content.getBytes(Consts.UTF_8).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(CONNECTION, Values.KEEP_ALIVE);
httpResponse.headers().set(DATE, new Date()); httpResponse.headers().set(DATE, new Date());
httpResponse.headers().set(HttpHeaders.SERVER, SERVER); httpResponse.headers().set(HttpHeaders.Names.SERVER, SERVER);
httpResponse.headers() httpResponse.headers()
.set(USER_AGENT, .set(USER_AGENT,
String.format("%s/%s", WEIXIN4J, String.format("%s/%s", WEIXIN4J,
WeixinServerBootstrap.VERSION)); WeixinServerBootstrap.VERSION));
return httpResponse;
} }
} }