2012-04-06 5 views
0

Ich versuche, HttpPostRequestDecoder von Netty Erweiterung 1.1.9 mit Netty 3.3.1 zu verwenden. Ich bekomme jedoch Probleme bei der Klassenübertragung, wenn ich versuche, von der integrierten Netty-HttpRequest-Anweisung zu dem zu gelangen, was im Paket org.jboss.nety.handler.codec.http2 verwendet wird.Verwenden von HttpPostRequestDecoder mit Netty 3.x

Was ist der richtige Weg?

org.jboss.netty.handler.codec.http.DefaultHttpRequest request; 
HttpPostRequestDecoder decoder = new HttpPostRequestDecoder((org.jboss.netty.handler.codec.http.HttpRequest) request); 

Antwort

1

habe ich nie die netty Erweiterungen, sondern von einem kurzen Blick auf die Quelle sieht es aus wie Sie sicher sein müssen den http-Codec Sachen zu verwenden, die mit ihm ausgeliefert. Aus Ihrer Beschreibung scheint es, als ob Sie versuchen, die HTTP-Codec-Sachen, die mit netty kommen, und die, die mit Netto-Erweiterung kommt, zu mischen.

+0

Ja, das war der Fall .. Ich war zwischen den beiden für die Interoperabilität der Hoffnung .. nicht gehen wie geplant, also habe ich einen schnellen und dreckigen Konverter gemacht. – sbook

0

Haben Sie versucht, den HttpPostRequestDecoder aus dem Masterzweig zu verwenden?

https://github.com/netty/netty/tree/master/codec-http/src/main/java/io/netty/handler/codec/http

Es scheint, für mich zu arbeiten. Siehe https://github.com/mashupbots/socko/tree/master/socko-webserver/src/main/java/org/mashupbots/socko/postdecoder

Sie müssen nur alle relevanten Dateien in Ihr Quellverzeichnis holen und den Namespace ändern.

+0

Ich habe noch nicht auf den blutenden Ast verzweigt, immer noch auf 3.x – sbook

0

Ich landete einen kleinen Wandler zwischen den http.DefaultHttpRequest und http2.DefaultHttpRequest Implementierungen schreiben:

org.jboss.netty.handler.codec.http2.DefaultHttpRequest convertedRequest = new org.jboss.netty.handler.codec.http2.DefaultHttpRequest(HttpVersion.HTTP_1_0, org.jboss.netty.handler.codec.http2.HttpMethod.POST, request.getUri()); 
convertedRequest.setContent(request.getContent()); 
convertedRequest.setChunked(request.isChunked()); 
// convert the headers 
for (Entry<String, String> entry : request.getHeaders()) { 
    convertedRequest.setHeader(entry.getKey(), entry.getValue()); 
}