Я хочу протестировать ChannelInboundHandler в Netty, это ввод HTTPFullRequest
.
Вот мой пост:
POST HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
paramA=dataA\
¶mB=dataB
Я использую EmbbedChannel для проверки обработчика, вот код.
EmbeddedChannel channel = new EmbeddedChannel(
new ChannelInitializer<EmbeddedChannel>() {
@Override
protected void initChannel(EmbeddedChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast("httpCodec", new HttpServerCodec());
p.addLast("aggregator", new HttpObjectAggregator(100000));
p.addLast("readPost", new ReadPost());
}
}
);
// input contains the post above.
assertTrue((channel.writeInbound(input.retain())));
но мой ReadPost
всегда читаетплохой пост с жалобами failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9))
А вот мой снимок обработчика ReadPost:
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof FullHttpRequest) {
FullHttpRequest req = (FullHttpRequest) msg;
if (req.method().equals(HttpMethod.POST)) {
.....
}
кто-нибудь знает почему?Заранее спасибо.